//--------------------------------------------------------------------
// Microsoft OLE DB Testing
//
// Copyright 1995-2000 Microsoft Corporation.
//
// @doc 
//
// @module IDBPRPTS.CPP | Source code for autotest IDBPRPTS.CPP.
//

#include "MODStandard.hpp"	// Standard headers, precompiled in modcore.cpp
#define  DBINITCONSTANTS	// Must be defined to initialize constants in OLEDB.H
#define  INITGUID
#include "idbprpts.h"		// Testcase's header
#include "miscfunc.h"
#include "extralib.h"

#include <oledb.h>			// OLEDB
#include <oledberr.h>		// OLEDB
#include <objbase.h>		// CoInitializeEx()
#include <msdasc.h>			// IDataInitialize 

CLSID CLSID_SQLOLEDB;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Module Values
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// {{ TCW_MODULE_GLOBALS
DECLARE_MODULE_CLSID = { 0x11db17b0, 0xa782, 0x11cf, { 0x98, 0xf9, 0x00, 0xaa, 0x00, 0x37, 0xda, 0x9b }};
DECLARE_MODULE_NAME("IDBProperties");
DECLARE_MODULE_OWNER("Microsoft");
DECLARE_MODULE_DESCRIP("Test module for IDBProperties Interfaces");
DECLARE_MODULE_VERSION(831416337);
// TCW_WizardVersion(2)
// TCW_Automation(True)
// }} TCW_MODULE_GLOBALS_END


//Has function InitGetPropDefault been executed yet?
BOOL g_fInitGetPropDefault=FALSE;
BOOL g_fInitGetPropInfoDefault=FALSE;

ULONG g_ulExtraGetProp=0;
ULONG g_ulExtraGetPropInfo=0;

ULONG g_ulCOLProp=0;
ULONG g_ulDSOProp=0;
ULONG g_ulDSOInfoProp=0;
ULONG g_ulDBInitProp=0;
ULONG g_ulIDXProp=0;
ULONG g_ulROWProp=0;
ULONG g_ulSESProp=0;
ULONG g_ulTBLProp=0;

ULONG g_ulExtraCOLProp=0;
ULONG g_ulExtraDSOProp=0;
ULONG g_ulExtraDSOInfoProp=0;
ULONG g_ulExtraDBInitProp=0;
ULONG g_ulExtraIDXProp=0;
ULONG g_ulExtraROWProp=0;
ULONG g_ulExtraSESProp=0;
ULONG g_ulExtraTBLProp=0;


//To add a new property to the test :-
//(1) Add it to the g_rgDBProperties array.
//(2) Define a const ULONG IDX_* for it.
//(3) In aded to end of a property set, modify IDX_*_END
//		value. E.g. to add a new prop to end of DATASOURCEINFO 
//		set, modify IDX_DATASOURCEINFO_END.
//(4) Do a search for "TABLESTATISTICS" to make sure didn't
//		miss out anything.


//Global for &DBPROPERTYSUPPORT attributes
struct DBPrptAttr
{
	const GUID			*pGuidPropertySet;	//The GUID of the property set
	DBPROPID			dwPropertyID;		//The ID of the property
	BOOL				fSupported;			//Whether the property is supported
	BOOL				fSettable;			//Whether the property is settable
	VARTYPE				vtType;				//The type of the property
	VARIANT				vDefault;			//The default of the property
	WCHAR				wszDescription[DESCRIPTION_SIZE];	//The description of the property
}g_rgDBProperties[]={
//                                                                                                       
//pGuidPropertySet			dwPropertyID						fSupported	fSettable   vtType		vDefault				Description           
//================			============						==========	=========	======		========				    ============     
&DBPROPSET_COLUMN,			DBPROP_COL_AUTOINCREMENT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Autoincrement\0",
&DBPROPSET_COLUMN,			DBPROP_COL_DEFAULT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Default\0",
&DBPROPSET_COLUMN,			DBPROP_COL_DESCRIPTION,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Description\0",
&DBPROPSET_COLUMN,			DBPROP_COL_FIXEDLENGTH,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Fixed Length\0",
&DBPROPSET_COLUMN,			DBPROP_COL_INCREMENT,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Increment\0",
&DBPROPSET_COLUMN,			DBPROP_COL_ISLONG,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Is Long\0",
&DBPROPSET_COLUMN,			DBPROP_COL_NULLABLE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Nullable\0",
&DBPROPSET_COLUMN,			DBPROP_COL_PRIMARYKEY,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Primary Key\0",
&DBPROPSET_COLUMN,			DBPROP_COL_SEED,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Seed\0",
&DBPROPSET_COLUMN,			DBPROP_COL_UNIQUE,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Unique\0",
&DBPROPSET_COLUMN,			DBPROP_COLUMNLCID,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Column LCID\0",
&DBPROPSET_DATASOURCE,		DBPROP_CURRENTCATALOG,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Current Catalog\0",
&DBPROPSET_DATASOURCE,		DBPROP_MULTIPLECONNECTIONS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Connections\0",
&DBPROPSET_DATASOURCE,		DBPROP_RESETDATASOURCE,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Reset Datasource\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ACTIVESESSIONS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Active Sessions\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ALTERCOLUMN,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Alter Column Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ASYNCTXNABORT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Asynchable Abort\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ASYNCTXNCOMMIT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Asynchable Commit\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_BYREFACCESSORS,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Pass By Ref Accessors\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGLOCATION,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Catalog Location\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGTERM,		            FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Catalog Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CATALOGUSAGE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Catalog Usage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_COLUMNDEFINITION,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Column Definition\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_COMSERVICES,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"COM Service Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CONCATNULLBEHAVIOR,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"NULL Concatenation Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_CONNECTIONSTATUS,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Connection Status\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCENAME,				FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"Data Source Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCEREADONLY,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Read-Only Data Source\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DATASOURCE_TYPE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Data Source Type\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DBMSNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"DBMS Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DBMSVER,						FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"DBMS Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_DSOTHREADMODEL,	            FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Data Source Object Threading Model\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_GENERATEURL,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"URL Generation\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_GROUPBY,						FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"GROUP BY Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_HETEROGENEOUSTABLES,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Heterogeneous Table Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_IDENTIFIERCASE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Identifier Case Sensitivity\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXINDEXSIZE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Index Size\0",	
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXOPENCHAPTERS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Open Chapters\0",	
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXROWSIZE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Row Size\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXROWSIZEINCLUDESBLOB,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Maximum Row Size Includes BLOB\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MAXTABLESINSELECT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Tables in SELECT\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLEPARAMSETS,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Parameter Sets\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLERESULTS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Multiple Results\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTIPLESTORAGEOBJECTS,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multiple Storage Objects\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_MULTITABLEUPDATE,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Multi-Table Update\0",  
&DBPROPSET_DATASOURCEINFO,	DBPROP_NULLCOLLATION,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Collation Order\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OLEOBJECTS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"OLE Object Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OPENROWSETSUPPORT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Open Rowset Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_ORDERBYCOLUMNSINSELECT,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ORDER BY Columns in Select List\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_OUTPUTPARAMETERAVAILABILITY,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Output Parameter Availability\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PERSISTENTIDTYPE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Persistent ID Type\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PREPAREABORTBEHAVIOR,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Prepare Abort Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PREPARECOMMITBEHAVIOR,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Prepare Commit Behavior\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROCEDURETERM,				FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Procedure Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERFRIENDLYNAME,		FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Friendly Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERMEMORY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Provider Owned Memory\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERFILENAME,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDEROLEDBVER,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},  	L"OLE DB Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_PROVIDERVER,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Provider Version\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_QUOTEDIDENTIFIERCASE,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Quoted Identifier Sensitivity\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_ROWSETCONVERSIONSONCOMMAND,	FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Rowset Conversions on Command\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_SCHEMATERM,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Schema Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SCHEMAUSAGE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Schema Usage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SERVERNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Server Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SQLSUPPORT,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"SQL Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_STRUCTUREDSTORAGE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Structured Storage\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUBQUERIES,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Subquery Support\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNDDL,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Transaction DDL\0", 
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNISOLEVELS,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Isolation Levels\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_SUPPORTEDTXNISORETAIN,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Isolation Retention\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_TABLETERM,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Table Term\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_USERNAME,					FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"User Name\0",
&DBPROPSET_DATASOURCEINFO,	DBPROP_TABLESTATISTICS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Table Statistics Support\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_AUTOUPDATE,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Auto-Update\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_CLUSTERED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Clustered\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_FILLFACTOR,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Fill Factor\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_INITIALSIZE,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Initial Size\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_NULLCOLLATION,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Collation\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_NULLS,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"NULL Keys\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_PRIMARYKEY,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Primary Key\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_SORTBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Sort Bookmarks\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_TEMPINDEX,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Temporary Index\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_TYPE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Index Type\0",
&DBPROPSET_INDEX,			DBPROP_INDEX_UNIQUE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Unique\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_CACHE_AUTHINFO,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Cache Authentication\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_ENCRYPT_PASSWORD,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Encrypt Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_INTEGRATED,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Integrated Security\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_MASK_PASSWORD,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Mask Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PASSWORD,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Password\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PERSIST_ENCRYPTED,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Persist Encrypted\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO,	FALSE,	TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Persist Security Info\0",
&DBPROPSET_DBINIT,			DBPROP_AUTH_USERID,					FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"User ID\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_ASYNCH,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Asynchronous Processing\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_BINDFLAGS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bind Flags\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_CATALOG,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Initial Catalog\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_DATASOURCE,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Data Source\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_GENERALTIMEOUT,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"General Timeout\0",
#ifdef _WIN64
&DBPROPSET_DBINIT,			DBPROP_INIT_HWND,					FALSE,		TRUE,		VT_I8,		{VT_EMPTY,0,0,0,0},		L"Window Handle\0",
#else
&DBPROPSET_DBINIT,			DBPROP_INIT_HWND,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Window Handle\0",
#endif
&DBPROPSET_DBINIT,			DBPROP_INIT_IMPERSONATION_LEVEL,	FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Impersonation Level\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LCID,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Locale Identifier\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LOCATION,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Location\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_LOCKOWNER,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Lock Owner\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_MODE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Mode\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_OLEDBSERVICES,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"OLE DB Services\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROMPT,					FALSE,		TRUE,		VT_I2,		{VT_EMPTY,0,0,0,0},		L"Prompt\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROTECTION_LEVEL,		FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Protection Level\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_PROVIDERSTRING,			FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Extended Properties\0",
&DBPROPSET_DBINIT,			DBPROP_INIT_TIMEOUT,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Connect Timeout\0",
&DBPROPSET_ROWSET,			DBPROP_ABORTPRESERVE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Preserve on Abort\0",
&DBPROPSET_ROWSET,			DBPROP_ACCESSORDER,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Access Order\0",
&DBPROPSET_ROWSET,			DBPROP_APPENDONLY,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Append-Only Rowset\0",
&DBPROPSET_ROWSET,			DBPROP_BLOCKINGSTORAGEOBJECTS,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Blocking Storage Objects\0",
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKINFO,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bookmark Information\0", 
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Use Bookmarks\0", 
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKSKIPPED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Skip Deleted Bookmarks\0",
&DBPROPSET_ROWSET,			DBPROP_BOOKMARKTYPE,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Bookmark Type\0",
&DBPROPSET_ROWSET,			DBPROP_CACHEDEFERRED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Cache Deferred Columns\0",
&DBPROPSET_ROWSET,			DBPROP_CANFETCHBACKWARDS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Fetch Backwards\0",
&DBPROPSET_ROWSET,			DBPROP_CANHOLDROWS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Hold Rows\0",
&DBPROPSET_ROWSET,			DBPROP_CANSCROLLBACKWARDS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Scroll Backwards\0",
&DBPROPSET_ROWSET,			DBPROP_CHANGEINSERTEDROWS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Change Inserted Rows\0",
&DBPROPSET_ROWSET,			DBPROP_CLIENTCURSOR,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Client Cursor\0",
&DBPROPSET_ROWSET,			DBPROP_COLUMNRESTRICT,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Column Privileges\0",
&DBPROPSET_ROWSET,			DBPROP_COMMANDTIMEOUT,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Command Time Out\0",
&DBPROPSET_ROWSET,			DBPROP_COMMITPRESERVE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Preserve on Commit\0",
&DBPROPSET_ROWSET,			DBPROP_DEFERRED,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Defer Column\0",
&DBPROPSET_ROWSET,			DBPROP_DELAYSTORAGEOBJECTS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Delay Storage Object Updates\0",
&DBPROPSET_ROWSET,			DBPROP_FINDCOMPAREOPS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Find Operations\0",
&DBPROPSET_ROWSET,			DBPROP_HIDDENCOLUMNS,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Hidden Columns\0",
&DBPROPSET_ROWSET,			DBPROP_IMMOBILEROWS,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Immobile Rows\0",
&DBPROPSET_ROWSET,			DBPROP_LITERALBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"Literal Bookmarks\0",
&DBPROPSET_ROWSET,			DBPROP_LITERALIDENTITY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Literal Row Identity\0",	
&DBPROPSET_ROWSET,			DBPROP_LOCKMODE,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Lock Mode\0",	
&DBPROPSET_ROWSET,			DBPROP_MAXOPENROWS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Open Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAXPENDINGROWS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},  	L"Maximum Pending Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAXROWS,						FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Rows\0",
&DBPROPSET_ROWSET,			DBPROP_MAYWRITECOLUMN,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Column Writable\0",
&DBPROPSET_ROWSET,			DBPROP_MEMORYUSAGE,					FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Memory Usage\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFICATIONGRANULARITY,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Notification Granularity\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFICATIONPHASES,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Notification Phases\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYCOLUMNSET,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Column Set Notification\0", 
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWDELETE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Delete Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWFIRSTCHANGE,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row First Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWINSERT,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Insert Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWRESYNCH,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Resynchronization Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETCHANGED,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE,	FALSE,	FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Fetch Position Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWSETRELEASE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Rowset Release Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDOCHANGE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Change Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDODELETE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Delete Notification\0",
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUNDOINSERT,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Undo Insert Notification\0",			
&DBPROPSET_ROWSET,			DBPROP_NOTIFYROWUPDATE,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Update Notification\0",
&DBPROPSET_ROWSET,			DBPROP_ORDEREDBOOKMARKS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Bookmarks Ordered\0",  
&DBPROPSET_ROWSET,			DBPROP_OTHERINSERT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Others' Inserts Visible\0",
&DBPROPSET_ROWSET,			DBPROP_OTHERUPDATEDELETE,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Others' Changes Visible\0",
&DBPROPSET_ROWSET,			DBPROP_OWNINSERT,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Own Inserts Visible\0", 
&DBPROPSET_ROWSET,			DBPROP_OWNUPDATEDELETE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Own Changes Visible\0",
&DBPROPSET_ROWSET,			DBPROP_QUICKRESTART,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Quick Restart\0",
&DBPROPSET_ROWSET,			DBPROP_REENTRANTEVENTS,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Reentrant Events\0",
&DBPROPSET_ROWSET,			DBPROP_REMOVEDELETED,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Remove Deleted Rows\0",
&DBPROPSET_ROWSET,			DBPROP_REPORTMULTIPLECHANGES,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Report Multiple Changes\0",
&DBPROPSET_ROWSET,			DBPROP_RETURNPENDINGINSERTS,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Return Pending Inserts\0",
&DBPROPSET_ROWSET,			DBPROP_ROW_BULKOPS,					FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Bulk Operations\0",
&DBPROPSET_ROWSET,			DBPROP_ROWRESTRICT,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Row Privileges\0",
&DBPROPSET_ROWSET,			DBPROP_ROWSET_ASYNCH,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Asynchronous Rowset Processing\0",
&DBPROPSET_ROWSET,			DBPROP_ROWTHREADMODEL,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Row Threading Model\0",
&DBPROPSET_ROWSET,			DBPROP_SERVERCURSOR,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Server Cursor\0",
&DBPROPSET_ROWSET,			DBPROP_SERVERDATAONINSERT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Server Data on Insert\0",
&DBPROPSET_ROWSET,			DBPROP_STORAGEFLAGS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Storage Flags\0",
&DBPROPSET_ROWSET,			DBPROP_STRONGIDENTITY,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Strong Row Identity\0",
&DBPROPSET_ROWSET,			DBPROP_TRANSACTEDOBJECT,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Objects Transacted\0",
&DBPROPSET_ROWSET,			DBPROP_UNIQUEROWS,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Unique Rows\0",
&DBPROPSET_ROWSET,			DBPROP_UPDATABILITY,				FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Updatability\0",			
&DBPROPSET_ROWSET,			DBPROP_IAccessor,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IAccessor\0",
&DBPROPSET_ROWSET,			DBPROP_IBindResource,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IBindResource\0",
&DBPROPSET_ROWSET,			DBPROP_IChapteredRowset,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IChapteredRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsInfo,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsInfo2,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo2\0",
&DBPROPSET_ROWSET,			DBPROP_IColumnsRowset,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IConnectionPointContainer,	FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IConnectionPointContainer\0",
&DBPROPSET_ROWSET,			DBPROP_IConvertType,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IConvertType\0",
&DBPROPSET_ROWSET,			DBPROP_ICreateRow,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ICreateRow\0",
&DBPROPSET_ROWSET,			DBPROP_IDBAsynchStatus,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IDBAsynchStatus\0",
&DBPROPSET_ROWSET,			DBPROP_IDBBinderProperties,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IDBBinderProperties\0",
&DBPROPSET_ROWSET,			DBPROP_IGetRow,						FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetRow\0",
&DBPROPSET_ROWSET,			DBPROP_IGetSession,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetSession\0",
&DBPROPSET_ROWSET,			DBPROP_IGetSourceRow,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IGetSourceRow\0",
&DBPROPSET_ROWSET,			DBPROP_IMultipleResults,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IMultipleResults\0",
&DBPROPSET_ROWSET,			DBPROP_IParentRowset,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IParentRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IRegisterProvider,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRegisterProvider\0",
&DBPROPSET_ROWSET,			DBPROP_IRow,						FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRow\0",
&DBPROPSET_ROWSET,			DBPROP_IRowChange,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowSchemaChange,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowSchemaChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowset,						FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowset\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetChange,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetChange\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetCurrentIndex,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetCurrentIndex\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetFind,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetFind\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetIdentity,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetIdentity\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetIndex,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetIndex\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetInfo,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetInfo\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetLocate,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"IRowsetLocate\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetRefresh,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},  	L"IRowsetRefresh\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetResynch,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetResynch\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetScroll,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetScroll\0", 
&DBPROPSET_ROWSET,			DBPROP_IRowsetUpdate,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetUpdate\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetView,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetView\0",
&DBPROPSET_ROWSET,			DBPROP_IScopedOperations,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IScopedOperations\0",
&DBPROPSET_ROWSET,			DBPROP_ISupportErrorInfo,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISupportErrorInfo\0",
&DBPROPSET_ROWSET,			DBPROP_ILockBytes,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ILockBytes\0",
&DBPROPSET_ROWSET,			DBPROP_ISequentialStream,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISequentialStream\0",
&DBPROPSET_ROWSET,			DBPROP_IStorage,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IStorage\0",
&DBPROPSET_ROWSET,			DBPROP_IStream,						FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IStream\0",
&DBPROPSET_ROWSET,			DBPROP_IRowsetBookmark,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetBookmark\0",
&DBPROPSET_ROWSET,			DBPROP_SKIPROWCOUNTRESULTS,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Skip Row Count Results\0",
&DBPROPSET_SESSION,			DBPROP_SESS_AUTOCOMMITISOLEVELS,	FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Autocommit Isolation Levels\0",
&DBPROPSET_TABLE,			DBPROP_TBL_TEMPTABLE,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Temporary Table\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_USERNAME,			FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Trustee User Name\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_AUTHENTICATION,		FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Trustee Authentication\0",
&DBPROPSET_TRUSTEE,			DBPROP_TRUSTEE_NEWAUTHENTICATION,	FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"New Trustee Authentication\0",
&DBPROPSET_VIEW,			DBPROP_FILTERCOMPAREOPS,			FALSE,		TRUE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Filter Operations\0",
&DBPROPSET_VIEW,			DBPROP_IAccessor,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IAccessor\0",
&DBPROPSET_VIEW,			DBPROP_IColumnsInfo,				FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IColumnsInfo\0",
&DBPROPSET_VIEW,			DBPROP_ISupportErrorInfo,			FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"ISupportErrorInfo\0",
&DBPROPSET_VIEW,			DBPROP_IViewChapter,				FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewChapter\0",
&DBPROPSET_VIEW,			DBPROP_IViewFilter,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewFilter\0",
&DBPROPSET_VIEW,			DBPROP_IViewRowset,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewRowset\0",
&DBPROPSET_VIEW,			DBPROP_IViewSort,					FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IViewSort\0",
&DBPROPSET_VIEW,			DBPROP_MAXORSINFILTER,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum OR Conditions\0",	
&DBPROPSET_VIEW,			DBPROP_MAXSORTCOLUMNS,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Maximum Sort Columns\0",	
&DBPROPSET_VIEW,			DBPROP_SORTONINDEX,					FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Sort on Index\0", 
&DBPROPSET_STREAM,			DBPROP_OUTPUTSTREAM,				FALSE,		TRUE,		VT_UNKNOWN,	{VT_EMPTY,0,0,0,0},		L"Output stream\0",
&DBPROPSET_STREAM,			DBPROP_OUTPUTENCODING,				FALSE,		TRUE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Output encoding\0",

&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_ACCESSIBLEPROCEDURES,FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Accessible Procedures\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_ACCESSIBLETABLES,	FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Accessible Tables\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_ODBCSQLOPTIEF,		FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Integrity Enhancement Facility\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_OJCAPABILITY,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Outer Join Capabilities\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_PROCEDURES,			FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Stored Procedures\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_DRIVERNAME,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Driver Name\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_DRIVERVER,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Driver Version\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_DRIVERODBCVER,		FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Driver ODBC Version\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_LIKEESCAPECLAUSE,	FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Like Escape Clause\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_SPECIALCHARACTERS,	FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Special Characters\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_MAXCOLUMNSINGROUPBY,FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Max Columns in Group By\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_MAXCOLUMNSININDEX,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Max Columns in Index\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_MAXCOLUMNSINORDERBY,FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Max Columns in Order By\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_MAXCOLUMNSINSELECT,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Max Columns in Select\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_MAXCOLUMNSINTABLE,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Max Columns in Table\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_NUMERICFUNCTIONS,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Numeric Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_ODBCSQLCONFORMANCE,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"SQL Grammar Support\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_OUTERJOINS,			FALSE,		FALSE,		VT_BSTR,	{VT_EMPTY,0,0,0,0},		L"Outer Joins\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_STRINGFUNCTIONS,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"String Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_SYSTEMFUNCTIONS,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"System Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_TIMEDATEFUNCTIONS,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Time/Date Functions\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_FILEUSAGE,			FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"File Usage\0",
&DBPROPSET_PROVIDERDATASOURCEINFO,	KAGPROP_ACTIVESTATEMENTS,	FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"Active Statements\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_QUERYBASEDUPDATES,	FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Query Based Updates/Deletes/Inserts\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_MARSHALLABLE,		FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Generate a Rowset that can be marshalled\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_POSITIONONNEWROW,	FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Position on the last row after insert\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_IRowsetChangeExtInfo,FALSE,		FALSE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"IRowsetChangeExtInfo\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_CURSOR,				FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"ODBC Cursor Type\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_CONCURRENCY,		FALSE,		FALSE,		VT_I4,		{VT_EMPTY,0,0,0,0},		L"ODBC Concurrency Type\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_BLOBSONFOCURSOR,	FALSE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"BLOB accessibility on Forward-Only cursor\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_INCLUDENONEXACT,	TRUE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Include SQL_FLOAT, SQL_DOUBLE, and SQL_REAL in QBU where clauses\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_FORCESSFIREHOSEMODE,TRUE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Force SQL Server Firehose Mode cursor\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_FORCENOPARAMETERREBIND,TRUE,	TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Force no parameter rebinding when executing a command\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_FORCENOPREPARE,		TRUE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Force no command preparation when executing a parameterized command\0",
&DBPROPSET_PROVIDERROWSET,			KAGPROP_FORCENOREEXECUTE,	TRUE,		TRUE,		VT_BOOL,	{VT_EMPTY,0,0,0,0},		L"Force no command reexecution when failure to satisfy all required properties\0",

};

ULONG g_cDBProperties = NUMELEM(g_rgDBProperties);

//Indexes to g_rgDBProperties[] array.  Need parenthese in the code.
//Can not add parenthese here, exceeds compiler limit.
										
const ULONG IDX_COL_AUTOINCREMENT						=(ULONG)0L;
const ULONG IDX_COL_DEFAULT								=IDX_COL_AUTOINCREMENT+1;
const ULONG IDX_COL_DESCRIPTION							=IDX_COL_DEFAULT+1;
const ULONG IDX_COL_FIXEDLENGTH							=IDX_COL_DESCRIPTION+1;
const ULONG IDX_COL_INCREMENT							=IDX_COL_FIXEDLENGTH+1;
const ULONG IDX_COL_ISLONG								=IDX_COL_INCREMENT+1;
const ULONG IDX_COL_NULLABLE							=IDX_COL_ISLONG+1;
const ULONG IDX_COL_PRIMARYKEY							=IDX_COL_NULLABLE+1;
const ULONG IDX_COL_SEED								=IDX_COL_PRIMARYKEY+1;
const ULONG IDX_COL_UNIQUE								=IDX_COL_SEED+1;
const ULONG IDX_COLUMNLCID								=IDX_COL_UNIQUE+1;
const ULONG IDX_CURRENTCATALOG							=IDX_COLUMNLCID+1;
const ULONG IDX_MULTIPLECONNECTIONS						=IDX_CURRENTCATALOG+1;
const ULONG IDX_RESETDATASOURCE							=IDX_MULTIPLECONNECTIONS+1;
const ULONG IDX_ACTIVESESSIONS							=IDX_RESETDATASOURCE+1;
const ULONG IDX_ALTERCOLUMN								=IDX_ACTIVESESSIONS+1;
const ULONG IDX_ASYNCTXNABORT							=IDX_ALTERCOLUMN+1;
const ULONG IDX_ASYNCTXNCOMMIT							=IDX_ASYNCTXNABORT+1;
const ULONG IDX_BYREFACCESSORS							=IDX_ASYNCTXNCOMMIT+1;
const ULONG IDX_CATALOGLOCATION							=IDX_BYREFACCESSORS+1;
const ULONG IDX_CATALOGTERM		        				=IDX_CATALOGLOCATION+1;
const ULONG IDX_CATALOGUSAGE							=IDX_CATALOGTERM+1;
const ULONG IDX_COLUMNDEFINITION						=IDX_CATALOGUSAGE+1;
const ULONG IDX_COMSERVICES								=IDX_COLUMNDEFINITION+1;
const ULONG IDX_CONCATNULLBEHAVIOR						=IDX_COMSERVICES+1;
const ULONG IDX_CONNECTIONSTATUS						=IDX_CONCATNULLBEHAVIOR+1;
const ULONG IDX_DATASOURCENAME							=IDX_CONNECTIONSTATUS+1;
const ULONG IDX_DATASOURCEREADONLY						=IDX_DATASOURCENAME+1;
const ULONG IDX_DATASOURCETYPE							=IDX_DATASOURCEREADONLY+1;
const ULONG IDX_DBMSNAME								=IDX_DATASOURCETYPE+1;
const ULONG IDX_DBMSVER									=IDX_DBMSNAME+1;
const ULONG IDX_DSOTHREADMODEL							=IDX_DBMSVER+1;
const ULONG IDX_GENERATEURL								=IDX_DSOTHREADMODEL+1;
const ULONG IDX_GROUPBY									=IDX_GENERATEURL+1;
const ULONG IDX_HETEROGENEOUSTABLES						=IDX_GROUPBY+1;
const ULONG IDX_IDENTIFIERCASE							=IDX_HETEROGENEOUSTABLES+1;
const ULONG IDX_MAXINDEXSIZE							=IDX_IDENTIFIERCASE+1;
const ULONG	IDX_MAXOPENCHAPTERS							=IDX_MAXINDEXSIZE+1;	
const ULONG IDX_MAXROWSIZE								=IDX_MAXOPENCHAPTERS+1;
const ULONG IDX_MAXROWSIZEINCLUDESBLOB					=IDX_MAXROWSIZE+1;
const ULONG IDX_MAXTABLESINSELECT						=IDX_MAXROWSIZEINCLUDESBLOB+1;
const ULONG IDX_MULTIPLEPARAMSETS						=IDX_MAXTABLESINSELECT+1;
const ULONG IDX_MULTIPLERESULTS							=IDX_MULTIPLEPARAMSETS+1;
const ULONG IDX_MULTIPLESTORAGEOBJECTS					=IDX_MULTIPLERESULTS+1;
const ULONG IDX_MULTITABLEUPDATE						=IDX_MULTIPLESTORAGEOBJECTS+1;
const ULONG IDX_NULLCOLLATION							=IDX_MULTITABLEUPDATE+1;
const ULONG IDX_OLEOBJECTS								=IDX_NULLCOLLATION+1;
const ULONG IDX_OPENROWSETSUPPORT						=IDX_OLEOBJECTS+1;
const ULONG IDX_ORDERBYCOLUMNSINSELECT					=IDX_OPENROWSETSUPPORT+1;
const ULONG IDX_OUTPUTPARAMETERAVAILABILITY				=IDX_ORDERBYCOLUMNSINSELECT+1;
const ULONG IDX_PERSISTENTIDTYPE						=IDX_OUTPUTPARAMETERAVAILABILITY+1;
const ULONG IDX_PREPAREABORTBEHAVIOR					=IDX_PERSISTENTIDTYPE+1;
const ULONG IDX_PREPARECOMMITBEHAVIOR					=IDX_PREPAREABORTBEHAVIOR+1;
const ULONG IDX_PROCEDURETERM							=IDX_PREPARECOMMITBEHAVIOR+1;
const ULONG IDX_PROVIDERFRIENDLYNAME					=IDX_PROCEDURETERM+1;
const ULONG IDX_PROVIDERMEMORY							=IDX_PROVIDERFRIENDLYNAME+1;
const ULONG IDX_PROVIDERFILENAME						=IDX_PROVIDERMEMORY+1;
const ULONG IDX_PROVIDEROLEDBVER						=IDX_PROVIDERFILENAME+1;
const ULONG IDX_PROVIDERVER								=IDX_PROVIDEROLEDBVER+1;
const ULONG IDX_QUOTEDIDENTIFIERCASE					=IDX_PROVIDERVER+1;
const ULONG IDX_ROWSETCONVERSIONSONCOMMAND				=IDX_QUOTEDIDENTIFIERCASE+1;
const ULONG IDX_SCHEMATERM								=IDX_ROWSETCONVERSIONSONCOMMAND+1;
const ULONG IDX_SCHEMAUSAGE								=IDX_SCHEMATERM+1;
const ULONG IDX_SERVERNAME								=IDX_SCHEMAUSAGE+1;
const ULONG IDX_SQLSUPPORT								=IDX_SERVERNAME+1;
const ULONG IDX_STRUCTUREDSTORAGE						=IDX_SQLSUPPORT+1;
const ULONG IDX_SUBQUERIES								=IDX_STRUCTUREDSTORAGE+1;
const ULONG IDX_SUPPORTEDTXNDDL							=IDX_SUBQUERIES+1;
const ULONG IDX_SUPPORTEDTXNISOLEVELS					=IDX_SUPPORTEDTXNDDL+1;
const ULONG IDX_SUPPORTEDTXNISORETAIN					=IDX_SUPPORTEDTXNISOLEVELS+1;
const ULONG IDX_TABLETERM								=IDX_SUPPORTEDTXNISORETAIN+1;
const ULONG IDX_USERNAME								=IDX_TABLETERM+1;
const ULONG IDX_TABLESTATISTICS							=IDX_USERNAME+1;
const ULONG IDX_INDEX_AUTOUPDATE						=IDX_TABLESTATISTICS+1;
const ULONG IDX_INDEX_CLUSTERED							=IDX_INDEX_AUTOUPDATE+1;
const ULONG IDX_INDEX_FILLFACTOR						=IDX_INDEX_CLUSTERED+1;
const ULONG IDX_INDEX_INITIALSIZE						=IDX_INDEX_FILLFACTOR+1;
const ULONG IDX_INDEX_NULLCOLLATION						=IDX_INDEX_INITIALSIZE+1;
const ULONG IDX_INDEX_NULLS								=IDX_INDEX_NULLCOLLATION+1;
const ULONG IDX_INDEX_PRIMARYKEY						=IDX_INDEX_NULLS+1;
const ULONG IDX_INDEX_SORTBOOKMARKS						=IDX_INDEX_PRIMARYKEY+1;
const ULONG IDX_INDEX_TEMPINDEX							=IDX_INDEX_SORTBOOKMARKS+1;
const ULONG IDX_INDEX_TYPE								=IDX_INDEX_TEMPINDEX+1;
const ULONG IDX_INDEX_UNIQUE							=IDX_INDEX_TYPE+1;
const ULONG IDX_AUTH_CACHE_AUTHINFO						=IDX_INDEX_UNIQUE+1;
const ULONG IDX_AUTH_ENCRYPT_PASSWORD					=IDX_AUTH_CACHE_AUTHINFO+1;
const ULONG IDX_AUTH_INTEGRATED							=IDX_AUTH_ENCRYPT_PASSWORD+1;
const ULONG IDX_AUTH_MASK_PASSWORD						=IDX_AUTH_INTEGRATED+1;
const ULONG IDX_AUTH_PASSWORD							=IDX_AUTH_MASK_PASSWORD+1;
const ULONG IDX_AUTH_PERSIST_ENCRYPTED					=IDX_AUTH_PASSWORD+1;
const ULONG IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO			=IDX_AUTH_PERSIST_ENCRYPTED+1;
const ULONG IDX_AUTH_USERID								=IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO+1;
const ULONG IDX_INIT_ASYNCH								=IDX_AUTH_USERID+1;
const ULONG IDX_INIT_BINDFLAGS							=IDX_INIT_ASYNCH+1;
const ULONG IDX_INIT_CATALOG							=IDX_INIT_BINDFLAGS+1;
const ULONG IDX_INIT_DATASOURCE							=IDX_INIT_CATALOG+1;
const ULONG IDX_INIT_GENERALTIMEOUT						=IDX_INIT_DATASOURCE+1;
const ULONG IDX_INIT_HWND								=IDX_INIT_GENERALTIMEOUT+1;
const ULONG IDX_INIT_IMPERSONATION_LEVEL				=IDX_INIT_HWND+1;
const ULONG IDX_INIT_LCID								=IDX_INIT_IMPERSONATION_LEVEL+1;
const ULONG IDX_INIT_LOCATION							=IDX_INIT_LCID+1;
const ULONG IDX_INIT_LOCKOWNER							=IDX_INIT_LOCATION+1;
const ULONG IDX_INIT_MODE								=IDX_INIT_LOCKOWNER+1;
const ULONG IDX_INIT_OLEDBSERVICES						=IDX_INIT_MODE+1;
const ULONG IDX_INIT_PROMPT								=IDX_INIT_OLEDBSERVICES+1;
const ULONG IDX_INIT_PROTECTION_LEVEL					=IDX_INIT_PROMPT+1;
const ULONG IDX_INIT_PROVIDERSTRING						=IDX_INIT_PROTECTION_LEVEL+1;
const ULONG IDX_INIT_TIMEOUT							=IDX_INIT_PROVIDERSTRING+1;
const ULONG IDX_ABORTPRESERVE							=IDX_INIT_TIMEOUT+1;
const ULONG IDX_ACCESSORDER								=IDX_ABORTPRESERVE+1;
const ULONG IDX_APPENDONLY								=IDX_ACCESSORDER+1;
const ULONG IDX_BLOCKINGSTORAGEOBJECTS					=IDX_APPENDONLY+1;
const ULONG IDX_BOOKMARKINFO							=IDX_BLOCKINGSTORAGEOBJECTS+1;
const ULONG IDX_BOOKMARKS								=IDX_BOOKMARKINFO+1;
const ULONG IDX_BOOKMARKSKIPPED							=IDX_BOOKMARKS+1;
const ULONG IDX_BOOKMARKTYPE	        				=IDX_BOOKMARKSKIPPED+1;
const ULONG IDX_CACHEDEFERRED							=IDX_BOOKMARKTYPE+1;
const ULONG IDX_CANFETCHBACKWARDS						=IDX_CACHEDEFERRED+1;
const ULONG IDX_CANHOLDROWS								=IDX_CANFETCHBACKWARDS+1;
const ULONG IDX_CANSCROLLBACKWARDS						=IDX_CANHOLDROWS+1;
const ULONG IDX_CHANGEINSERTEDROWS						=IDX_CANSCROLLBACKWARDS+1;
const ULONG IDX_CLIENTCURSOR							=IDX_CHANGEINSERTEDROWS+1;
const ULONG IDX_COLUMNRESTRICT							=IDX_CLIENTCURSOR+1;
const ULONG IDX_COMMANDTIMEOUT							=IDX_COLUMNRESTRICT+1;
const ULONG IDX_COMMITPRESERVE	        				=IDX_COMMANDTIMEOUT+1;
const ULONG IDX_DEFERRED								=IDX_COMMITPRESERVE+1;
const ULONG IDX_DELAYSTORAGEOBJECTS						=IDX_DEFERRED+1;
const ULONG IDX_FINDCOMPAREOPS							=IDX_DELAYSTORAGEOBJECTS+1;
const ULONG IDX_HIDDENCOLUMNS							=IDX_FINDCOMPAREOPS+1;
const ULONG IDX_IMMOBILEROWS							=IDX_HIDDENCOLUMNS+1;
const ULONG IDX_LITERALBOOKMARKS						=IDX_IMMOBILEROWS+1;
const ULONG IDX_LITERALIDENTITY							=IDX_LITERALBOOKMARKS+1;
const ULONG IDX_LOCKMODE								=IDX_LITERALIDENTITY+1;
const ULONG IDX_MAXOPENROWS								=IDX_LOCKMODE+1;
const ULONG IDX_MAXPENDINGROWS							=IDX_MAXOPENROWS+1;
const ULONG IDX_MAXROWS									=IDX_MAXPENDINGROWS+1;
const ULONG IDX_MAYWRITECOLUMN							=IDX_MAXROWS+1;
const ULONG IDX_MEMORYUSAGE								=IDX_MAYWRITECOLUMN+1;
const ULONG IDX_NOTIFICATIONGRANULARITY					=IDX_MEMORYUSAGE+1;
const ULONG IDX_NOTIFICATIONPHASES						=IDX_NOTIFICATIONGRANULARITY+1;
const ULONG IDX_NOTIFYCOLUMNSET							=IDX_NOTIFICATIONPHASES+1;
const ULONG IDX_NOTIFYROWDELETE							=IDX_NOTIFYCOLUMNSET+1;
const ULONG IDX_NOTIFYROWFIRSTCHANGE					=IDX_NOTIFYROWDELETE+1;
const ULONG IDX_NOTIFYROWINSERT							=IDX_NOTIFYROWFIRSTCHANGE+1;
const ULONG IDX_NOTIFYROWRESYNCH						=IDX_NOTIFYROWINSERT+1;
const ULONG IDX_NOTIFYROWSETCHANGED						=IDX_NOTIFYROWRESYNCH+1;
const ULONG IDX_NOTIFYROWSETFETCHPOSITIONCHANGE			=IDX_NOTIFYROWSETCHANGED+1;
const ULONG IDX_NOTIFYROWSETRELEASE						=IDX_NOTIFYROWSETFETCHPOSITIONCHANGE+1;
const ULONG IDX_NOTIFYROWUNDOCHANGE						=IDX_NOTIFYROWSETRELEASE+1;
const ULONG IDX_NOTIFYROWUNDODELETE						=IDX_NOTIFYROWUNDOCHANGE+1;
const ULONG IDX_NOTIFYROWUNDOINSERT						=IDX_NOTIFYROWUNDODELETE+1;
const ULONG IDX_NOTIFYROWUPDATE							=IDX_NOTIFYROWUNDOINSERT+1;
const ULONG IDX_ORDEREDBOOKMARKS						=IDX_NOTIFYROWUPDATE+1;
const ULONG IDX_OTHERINSERT								=IDX_ORDEREDBOOKMARKS+1;
const ULONG IDX_OTHERUPDATEDELETE						=IDX_OTHERINSERT+1;
const ULONG IDX_OWNINSERT								=IDX_OTHERUPDATEDELETE+1;
const ULONG IDX_OWNUPDATEDELETE							=IDX_OWNINSERT+1;
const ULONG IDX_QUICKRESTART							=IDX_OWNUPDATEDELETE+1;
const ULONG IDX_REENTRANTEVENTS							=IDX_QUICKRESTART+1;
const ULONG IDX_REMOVEDELETED							=IDX_REENTRANTEVENTS+1;
const ULONG IDX_REPORTMULTIPLECHANGES					=IDX_REMOVEDELETED+1;
const ULONG IDX_RETURNPENDINGINSERTS					=IDX_REPORTMULTIPLECHANGES+1;
const ULONG IDX_ROW_BULKOPS								=IDX_RETURNPENDINGINSERTS+1;
const ULONG IDX_ROWRESTRICT								=IDX_ROW_BULKOPS+1;
const ULONG IDX_ROWSET_ASYNCH							=IDX_ROWRESTRICT+1;
const ULONG IDX_ROWTHREADMODEL							=IDX_ROWSET_ASYNCH+1;
const ULONG IDX_SERVERCURSOR							=IDX_ROWTHREADMODEL+1;
const ULONG IDX_SERVERDATAONINSERT						=IDX_SERVERCURSOR+1;
const ULONG IDX_STORAGEFLAGS							=IDX_SERVERDATAONINSERT+1;
const ULONG IDX_STRONGIDENTITY							=IDX_STORAGEFLAGS+1;
const ULONG IDX_TRANSACTEDOBJECT						=IDX_STRONGIDENTITY+1;
const ULONG IDX_UNIQUEROWS								=IDX_TRANSACTEDOBJECT+1;
const ULONG IDX_UPDATABILITY							=IDX_UNIQUEROWS+1;
const ULONG IDX_IACCESSOR								=IDX_UPDATABILITY+1;
const ULONG IDX_IBINDRESOURCE							=IDX_IACCESSOR+1;
const ULONG IDX_ICHAPTEREDROWSET						=IDX_IBINDRESOURCE+1;
const ULONG IDX_ICOLUMNSINFO							=IDX_ICHAPTEREDROWSET+1;
const ULONG IDX_ICOLUMNSINFO2							=IDX_ICOLUMNSINFO+1;
const ULONG IDX_ICOLUMNSROWSET							=IDX_ICOLUMNSINFO2+1;
const ULONG IDX_ICONNECTIONPOINTCONTAINER				=IDX_ICOLUMNSROWSET+1;
const ULONG IDX_ICONVERTTYPE							=IDX_ICONNECTIONPOINTCONTAINER+1;
const ULONG IDX_ICREATEROW								=IDX_ICONVERTTYPE+1;
const ULONG IDX_IDBASYNCHSTATUS							=IDX_ICREATEROW+1;
const ULONG IDX_IBINDERPROPERTIES						=IDX_IDBASYNCHSTATUS+1;
const ULONG IDX_IGETROW									=IDX_IBINDERPROPERTIES+1;
const ULONG IDX_IGETSESSION								=IDX_IGETROW+1;
const ULONG IDX_IGETSOURCEROW							=IDX_IGETSESSION+1;
const ULONG IDX_IMULTIPLERESULTS						=IDX_IGETSOURCEROW+1;
const ULONG IDX_IPARENTROWSET							=IDX_IMULTIPLERESULTS+1;
const ULONG IDX_IREGISTERPROVIDER						=IDX_IPARENTROWSET+1;
const ULONG IDX_IROW									=IDX_IREGISTERPROVIDER+1;
const ULONG IDX_IROWCHANGE								=IDX_IROW+1;
const ULONG IDX_IROWSCHEMACHANGE						=IDX_IROWCHANGE+1;
const ULONG IDX_IROWSET									=IDX_IROWSCHEMACHANGE+1;
const ULONG IDX_IROWSETCHANGE							=IDX_IROWSET+1;
const ULONG IDX_IROWSETCURRENTINDEX						=IDX_IROWSETCHANGE+1;
const ULONG IDX_IROWSETFIND								=IDX_IROWSETCURRENTINDEX+1;
const ULONG IDX_IROWSETIDENTITY							=IDX_IROWSETFIND+1;
const ULONG IDX_IROWSETINDEX							=IDX_IROWSETIDENTITY+1;
const ULONG IDX_IROWSETINFO								=IDX_IROWSETINDEX+1;
const ULONG IDX_IROWSETLOCATE							=IDX_IROWSETINFO+1;
const ULONG IDX_IROWSETREFRESH							=IDX_IROWSETLOCATE+1;
const ULONG IDX_IROWSETRESYNCH							=IDX_IROWSETREFRESH+1;
const ULONG IDX_IROWSETSCROLL							=IDX_IROWSETRESYNCH+1;
const ULONG IDX_IROWSETUPDATE							=IDX_IROWSETSCROLL+1;
const ULONG IDX_IROWSETVIEW								=IDX_IROWSETUPDATE+1;
const ULONG IDX_ISCOPEDOPERATIONS						=IDX_IROWSETVIEW+1;
const ULONG IDX_ISUPPORTERRORINFO						=IDX_ISCOPEDOPERATIONS+1;
const ULONG IDX_ILOCKBYTES								=IDX_ISUPPORTERRORINFO+1;
const ULONG IDX_ISEQUENTIALSTREAM						=IDX_ILOCKBYTES+1;
const ULONG IDX_ISTORAGE								=IDX_ISEQUENTIALSTREAM+1;
const ULONG IDX_ISTREAM									=IDX_ISTORAGE+1;
const ULONG IDX_IROWSETBOOKMARK							=IDX_ISTREAM+1;
const ULONG IDX_SKIPROWCOUNTRESULTS						=IDX_IROWSETBOOKMARK+1;
const ULONG IDX_SESS_AUTOCOMMITISOLEVELS				=IDX_SKIPROWCOUNTRESULTS+1;
const ULONG IDX_TBL_TEMPTABLE							=IDX_SESS_AUTOCOMMITISOLEVELS+1;
const ULONG IDX_TRUSTEE_USERNAME						=IDX_TBL_TEMPTABLE+1;
const ULONG IDX_TRUSTEE_AUTHENTICATION					=IDX_TRUSTEE_USERNAME+1;
const ULONG IDX_TRUSTEE_NEWAUTHENTICATION				=IDX_TRUSTEE_AUTHENTICATION+1;
const ULONG IDX_FILTERCOMPAREOPS						=IDX_TRUSTEE_NEWAUTHENTICATION+1;
const ULONG IDX_VIACCESSOR								=IDX_FILTERCOMPAREOPS+1;
const ULONG IDX_VICOLUMNSINFO							=IDX_VIACCESSOR+1;
const ULONG IDX_VISUPPORTERRORINFO						=IDX_VICOLUMNSINFO+1;
const ULONG IDX_IVIEWCHAPTER							=IDX_VISUPPORTERRORINFO+1;
const ULONG IDX_IVIEWFILTER								=IDX_IVIEWCHAPTER+1;
const ULONG IDX_IVIEWROWSET								=IDX_IVIEWFILTER+1;
const ULONG IDX_IVIEWSORT								=IDX_IVIEWROWSET+1;
const ULONG IDX_MAXORSINFILTER							=IDX_IVIEWSORT+1;
const ULONG IDX_MAXSORTCOLUMNS							=IDX_MAXORSINFILTER+1;
const ULONG IDX_SORTONINDEX								=IDX_MAXSORTCOLUMNS+1;
const ULONG IDX_OUTPUTSTREAM							=IDX_SORTONINDEX+1;
const ULONG IDX_OUTPUTENCODING							=IDX_OUTPUTSTREAM+1;

// Provider Specific
const ULONG IDX_ACCESSIBLEPROCEDURES					=IDX_OUTPUTENCODING+1;
const ULONG IDX_ACCESSIBLETABLES						=IDX_ACCESSIBLEPROCEDURES+1;
const ULONG IDX_ODBCSQLOPTIEF							=IDX_ACCESSIBLETABLES+1;
const ULONG IDX_OJCAPABILITY							=IDX_ODBCSQLOPTIEF+1;
const ULONG IDX_PROCEDURES								=IDX_OJCAPABILITY+1;
const ULONG IDX_DRIVERNAME								=IDX_PROCEDURES+1;
const ULONG IDX_DRIVERVER								=IDX_DRIVERNAME+1;
const ULONG IDX_DRIVERODBCVER							=IDX_DRIVERVER+1;
const ULONG IDX_LIKEESCAPECLAUSE						=IDX_DRIVERODBCVER+1;
const ULONG IDX_SPECIALCHARACTERS						=IDX_LIKEESCAPECLAUSE+1;
const ULONG IDX_MAXCOLUMNSINGROUPBY						=IDX_SPECIALCHARACTERS+1;
const ULONG IDX_MAXCOLUMNSININDEX						=IDX_MAXCOLUMNSINGROUPBY+1;
const ULONG IDX_MAXCOLUMNSINORDERBY						=IDX_MAXCOLUMNSININDEX+1;
const ULONG IDX_MAXCOLUMNSINSELECT						=IDX_MAXCOLUMNSINORDERBY+1;
const ULONG IDX_MAXCOLUMNSINTABLE						=IDX_MAXCOLUMNSINSELECT+1;
const ULONG IDX_NUMERICFUNCTIONS						=IDX_MAXCOLUMNSINTABLE+1;
const ULONG IDX_ODBCSQLCONFORMANCE						=IDX_NUMERICFUNCTIONS+1;
const ULONG IDX_OUTERJOINS								=IDX_ODBCSQLCONFORMANCE+1;
const ULONG IDX_STRINGFUNCTIONS							=IDX_OUTERJOINS+1;
const ULONG IDX_SYSTEMFUNCTIONS							=IDX_STRINGFUNCTIONS+1;
const ULONG IDX_TIMEDATEFUNCTIONS						=IDX_SYSTEMFUNCTIONS+1;
const ULONG IDX_FILEUSAGE								=IDX_TIMEDATEFUNCTIONS+1;
const ULONG IDX_ACTIVESTATEMENTS						=IDX_FILEUSAGE+1;

const ULONG IDX_QUERYBASEDUPDATES						=IDX_ACTIVESTATEMENTS+1;
const ULONG IDX_KMARSHALLABLE							=IDX_QUERYBASEDUPDATES+1;
const ULONG IDX_POSITIONONNEWROW						=IDX_KMARSHALLABLE+1;
const ULONG IDX_IROWSETCHANGEEXTINFO					=IDX_POSITIONONNEWROW+1;
const ULONG IDX_CURSOR									=IDX_IROWSETCHANGEEXTINFO+1;
const ULONG IDX_CONCURRENCY								=IDX_CURSOR+1;
const ULONG IDX_BLOBSONFOCURSOR							=IDX_CONCURRENCY+1;
const ULONG IDX_INCLUDENONEXACT							=IDX_BLOBSONFOCURSOR+1;
const ULONG IDX_FORCESSFIREHOSEMODE						=IDX_INCLUDENONEXACT+1;
const ULONG IDX_FORCENOPARAMETERREBIND					=IDX_FORCESSFIREHOSEMODE+1;
const ULONG IDX_FORCENOPREPARE							=IDX_FORCENOPARAMETERREBIND+1;
const ULONG IDX_FORCENOREEXECUTE						=IDX_FORCENOPREPARE+1;

const ULONG  IDX_COLUMN_START							=IDX_COL_AUTOINCREMENT;
const ULONG  IDX_COLUMN_END								=IDX_COLUMNLCID;

const ULONG  IDX_DATASOURCE_START						=IDX_CURRENTCATALOG;
const ULONG  IDX_DATASOURCE_END							=IDX_RESETDATASOURCE;
														
const ULONG  IDX_DATASOURCEINFO_START					=IDX_ACTIVESESSIONS;
const ULONG  IDX_DATASOURCEINFO_END						=IDX_TABLESTATISTICS;

const ULONG  IDX_INDEX_START							=IDX_INDEX_AUTOUPDATE;
const ULONG  IDX_INDEX_END								=IDX_INDEX_UNIQUE;

const ULONG  IDX_DBINIT_START							=IDX_AUTH_CACHE_AUTHINFO;
const ULONG  IDX_DBINIT_END								=IDX_INIT_TIMEOUT;

const ULONG  IDX_ROWSET_START							=IDX_ABORTPRESERVE;
const ULONG  IDX_ROWSET_END								=IDX_SKIPROWCOUNTRESULTS;

const ULONG  IDX_SESSION_START							=IDX_SESS_AUTOCOMMITISOLEVELS;
const ULONG  IDX_SESSION_END							=IDX_SESS_AUTOCOMMITISOLEVELS;

const ULONG  IDX_TABLE_START							=IDX_TBL_TEMPTABLE;
const ULONG  IDX_TABLE_END								=IDX_TBL_TEMPTABLE;

const ULONG  IDX_TRUSTEE_START							=IDX_TRUSTEE_USERNAME;
const ULONG  IDX_TRUSTEE_END							=IDX_TRUSTEE_NEWAUTHENTICATION;

const ULONG  IDX_VIEW_START								=IDX_FILTERCOMPAREOPS;
const ULONG  IDX_VIEW_END								=IDX_SORTONINDEX;

const ULONG  IDX_OLEDB_START							=IDX_COLUMN_START;
const ULONG  IDX_OLEDB_END								=IDX_VIEW_END;

const ULONG  IDX_PROVIDERDATASOURCEINFO_START			=IDX_ACCESSIBLEPROCEDURES;
const ULONG  IDX_PROVIDERDATASOURCEINFO_END				=IDX_ACTIVESTATEMENTS;

const ULONG  IDX_PROVIDERROWSET_START					=IDX_QUERYBASEDUPDATES;
const ULONG  IDX_PROVIDERROWSET_END						=IDX_FORCENOREEXECUTE;

const ULONG  IDX_PROVIDERSPEC_START						=IDX_PROVIDERDATASOURCEINFO_START;
const ULONG  IDX_PROVIDERSPEC_END						=IDX_PROVIDERROWSET_END;

const ULONG  IDX_STREAM_START							=IDX_OUTPUTSTREAM;
const ULONG  IDX_STREAM_END								=IDX_OUTPUTENCODING;

//--------------------------------------------------------------------
// @func Module level initialization routine
//
// @rdesc Success or Failure
// 		@flag  TRUE  | Successful initialization
//		@flag  FALSE | Initialization problems
//
BOOL ModuleInit(CThisTestModule * pThisTestModule)
{
	// Initialize the Globals every time
	g_fInitGetPropDefault=g_fInitGetPropInfoDefault=FALSE;

	g_ulExtraGetProp=g_ulExtraGetPropInfo=0;
	g_ulExtraCOLProp=g_ulExtraDSOProp=g_ulExtraDSOInfoProp=g_ulExtraDBInitProp=g_ulExtraIDXProp=g_ulExtraROWProp=g_ulExtraSESProp=g_ulExtraTBLProp=0;
	g_ulCOLProp=g_ulDSOProp=g_ulDSOInfoProp=g_ulDBInitProp=g_ulIDXProp=g_ulROWProp=g_ulSESProp=g_ulTBLProp=0;

	for(ULONG i=0; i < g_cDBProperties; i++) 
		g_rgDBProperties[i].fSupported=FALSE;
	
	return ModuleCreateDBSession(pThisTestModule);
}	
  

//--------------------------------------------------------------------
// @func Module level termination routine
//
// @rdesc Success or Failure
// 		@flag  TRUE  | Successful initialization
//		@flag  FALSE | Initialization problems
//
BOOL ModuleTerminate(CThisTestModule * pThisTestModule)
{
	ULONG			ulcounter=0;

	//Need to loop through all the variants and clear them
	for(ulcounter=0; ulcounter < g_cDBProperties; ulcounter++)
		VariantClear(&(g_rgDBProperties[ulcounter].vDefault));

	//Free the interface we got in ModuleCreateDBSession()
	return ModuleReleaseDBSession(pThisTestModule);
}	

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Base Class Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// @class TCIDProperties Base Class for all IDBProperties:GetPropertyInfo Testcases
class TCIDProperties : public CRowsetObject
{
	public:
		// @cmember Constructor
		TCIDProperties(WCHAR *wstrTestCaseName) : CRowsetObject(wstrTestCaseName)
		{
		m_pIDBCreateSession		= NULL;
		m_pIDBPropUninit		= NULL;
		m_pIDBProperties		= NULL;
		m_pIDBCreateCommand		= NULL;
		m_pIOpenRowset			= NULL;
		m_cPropertyIDSets		= 0;
		*m_rgPropertyIDs		= NULL;
		m_pcPropertyInfoSets	= 0;
		m_prgPropertyInfoSets	= NULL;
		m_ppDescBuffer			= NULL;
		m_cPropertySets			= 0;
		m_pcPropertySets		= 0;
		m_prgPropertySets		= NULL;
		m_fSuccess				= TEST_FAIL;
		};

		// @cmember Destructor
		virtual ~TCIDProperties() {};
		// @cmember: Verify GetPropertyInfo
		BOOL	VerifyGetPropInfo(ULONG cIndex, BOOL fInitialized=TRUE, ULONG cPropset=0, 
								  ULONG cPropertyInfoSets=1, BOOL FreeMemory=TRUE, BOOL fDisplay=TRUE);
		// @cmember: Verify GetPropertyInfoNotSupported
		BOOL	VerifyGetPropInfoNotSupported(ULONG cIndex, BOOL fInitialized=TRUE, ULONG cPropset=0, 
								  ULONG cPropertyInfoSets=1, BOOL FreeMemory=TRUE);
		// @cmember: Verify GetPropertyInfo
		BOOL	GetPropInfoTest(ULONG ulDex, BOOL fInitialized = TRUE);
		// @cmember: Check and set properties from IDBProperties::GetPropertyInfo
		BOOL	InitGetPropInfoDefault();
		// @cmember: Check and set properties from IDBProperties::GetProperties
		BOOL	InitGetPropDefault(BOOL fInitialized=TRUE);
		// @cmember: Check a few Property values from IDBProperties::GetProperties
		void	CheckVersions(DBPROPID dwPropertyID,BSTR bstrVal);
		// @cmember: Check and set properties from ICommandProperties::GetProperties
		BOOL	InitCommandProperties();
		// @cmember: Get a property that is not supported
		BOOL	NotSupportedProperty(DBPROPID *dwPropertyID, ULONG IndexStart, ULONG IndexEnd);
		// @cmember: Get a property that is supported
		BOOL	SupportedProperty(DBPROPID *dwPropertyID, ULONG IndexStart, ULONG IndexEnd);
		// @cmember: Get a DataSourceInfo property that is settable
		BOOL	DataSourceInfoSettable(DBPROPID *dwPropertyID);
		// @cmember: Get a DataSourceInfo property that is not settable
		BOOL	DataSourceInfoNotSettable(DBPROPID *dwPropertyID);
		// @mfunc: Verify if the property is supported. It has to be called after
		inline	BOOL VerifySupported(ULONG idxPrpt) 
					{return g_rgDBProperties[idxPrpt].fSupported;};
		// @cmember: Verify GetPropertyInfo Sets
		BOOL	VerifyPropInfoSets(GUID guidPropertySet);
		// @mfunc: Reset the IDBProperties
		BOOL	ResetProperties();
		// @mfunc: Verify the property is set or unset correctly
		BOOL	VerifyProperty(ULONG cPrpt,BOOL fIReadData=FALSE,ULONG cImpPrpt=0,
					ULONG rgIDXPrpt[]=NULL,BOOL fInitialized=TRUE);
		// @mfunc: Get the attribute of the property
		EPROPERTYATTR GetPrptAttr(const ULONG cPrpt,BOOL fInitialized);
		// @mfunc: Verify the property is not supported
		BOOL	VerifyNotSupported(ULONG cPrpt, EPROPERTYATTR ePrptAttr,BOOL fInitialized);
		// @mfunc: Verify the property is not settable
		BOOL	VerifyPropertyNotSettable(ULONG	cPrpt, BOOL	fIReadData=FALSE,
					ULONG cImpPrpt=0, ULONG rgIDXPrpt[]=NULL, BOOL fSet=TRUE, BOOL fInitialized=TRUE);
		// @mfunc: Verify the property is settable
		BOOL	VerifyPropertySettable(ULONG cPrpt,	BOOL fIReadData=FALSE,
					ULONG cImpPrpt=0, ULONG rgIDXPrpt[]=NULL, BOOL fSet=TRUE);
		// @mfunc: Initialize the property set
		BOOL	InitDBPropSet(const ULONG cPrpt, DBPROPSET *pDBPropSet,
					BOOL fSet);
		// @mfunc: Verify the property set return is correct
		BOOL	VerifyDBPropSet(const ULONG	cPrpt, DBPROPSET *pDBPropSet,
					DBPROPSTATUS dwStatus, DBPROPOPTIONS dwOptions, BOOL fSet);
		// @mfunc: Initialize the property ID set
		BOOL	InitDBPropIDSet(const ULONG cPrpt, DBPROPIDSET *pDBPropIDSet);
		// @mfunc: Verify that get property returns the corret information
		BOOL	VerifyDBPropGet(const ULONG	cPrpt, DBPROPSET *pDBPropSet,
					DBPROPSTATUS dwStatus, BOOL	fSet);
		// @mfunc: Verify default values returned from properties
		BOOL	VerifyDBPropDefault(ULONG cPrpt, DBPROPSET *pDBPropSet, 
					BOOL fAfterRowset);
		// @mfunc: Check to see if the Property is Writable
		void	WritableProperty(ULONG cPrpt,BOOL fInitialized=TRUE);

	protected:
		//@member	Interface for DBSession Initialization
		IDBCreateSession * m_pIDBCreateSession;
		//@cmember	IDBProperties Interface
		IDBProperties *	m_pIDBProperties;
		//@cmember	IDBProperties Interface
		IDBProperties *	m_pIDBPropUninit;
		//@cmember	Number of PropertyIDSets
		ULONG			m_cPropertyIDSets;
		//@cmember	Array of DBPROPIDSET structures
		DBPROPIDSET		m_rgPropertyIDSets[5];
		//@cmember	Array of DBPROPIDs
		DBPROPID		m_rgPropertyIDs[5];
		//@cmember	Number of DBPROPINFOSET structures returned
		ULONG			m_pcPropertyInfoSets;
		//@cmember	Array of DBPROPINFOSET structures
		DBPROPINFOSET *	m_prgPropertyInfoSets;
		//@cmember	String values returned
		OLECHAR *		m_ppDescBuffer;
		//@cmember	Number of PropertyIDSets
		ULONG			m_cPropertySets;
		//@cmember	Array of DBPROPSET structures
		DBPROPSET		m_rgPropertySets[5];
		//@cmember	Array of DBPROP structures
		DBPROP			m_rgProperties[5];
		//@cmember	Number of DBPROPSET structures returned from GetProperties
		ULONG			m_pcPropertySets;
		//@cmember	Array of DBPROPSET structures returned from GetProperties
		DBPROPSET *		m_prgPropertySets;
		//@cmember	Variation passed or failed
		int				m_fSuccess;
};


//-----------------------------------------------------------------------------
//@mfunc: Verify supported IDBProperties::GetPropertyInfo
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyGetPropInfo(ULONG cIndex, BOOL fInitialized, ULONG cPropset, ULONG cPropertyInfoSets, BOOL FreeMemory, BOOL fDisplay)
{				
	BOOL fPass=FALSE;
	DBPROPFLAGS dwFlags = 0;

	//Check for return DBProperties
	if(!COMPARE(m_pcPropertyInfoSets, cPropertyInfoSets))
		goto END;

	//Check DBPROPINFOSET.guidPropertySet
	if(!COMPARE(m_prgPropertyInfoSets[cPropset].guidPropertySet,	
			*(g_rgDBProperties[cIndex].pGuidPropertySet)))
		goto END;

	//Check DBPROPINFOSET.cPropertyInfos
	if(!COMPARE(m_prgPropertyInfoSets[cPropset].cPropertyInfos, 1))
		goto END;

	//Check dwPropertyID
	if(!COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwPropertyID, g_rgDBProperties[cIndex].dwPropertyID))
		goto END;

	//Verify there are no unrecognized flags.
	dwFlags = m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags;
	COMPARE((~(DBPROPFLAGS_COLUMN|DBPROPFLAGS_COLUMN|DBPROPFLAGS_DATASOURCE|
		DBPROPFLAGS_DATASOURCECREATE|DBPROPFLAGS_DATASOURCEINFO|DBPROPFLAGS_DBINIT|
		DBPROPFLAGS_INDEX|DBPROPFLAGS_ROWSET|DBPROPFLAGS_TABLE|DBPROPFLAGS_COLUMNOK|
		DBPROPFLAGS_READ|DBPROPFLAGS_WRITE|DBPROPFLAGS_REQUIRED|DBPROPFLAGS_SESSION|
		DBPROPFLAGS_TRUSTEE|DBPROPFLAGS_VIEW|DBPROPFLAGS_STREAM)) & dwFlags, 0);

	// Check dwFlags is not DBPROPFLAGS_NOTSUPPORTED because S_OK was returned
	if(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags == DBPROPFLAGS_NOTSUPPORTED)
		COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags, 1);
	else
	{
		g_rgDBProperties[cIndex].fSupported=TRUE;

		//Check pwszDescription
		if( m_ppDescBuffer ) 
		{
			if(!COMPARE(0, wcscmp(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->pwszDescription, 
											g_rgDBProperties[cIndex].wszDescription)) && fDisplay)
			  odtLog<<L"The description is not same at "<<cIndex<<L" \n";
		}
		else
			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->pwszDescription, NULL);

		//dwFlags should set correct property group
		if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_COLUMN)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN), DBPROPFLAGS_COLUMN)) && fDisplay)
				odtLog<<wszColumnsFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_COLUMN | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_DATASOURCE)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE), DBPROPFLAGS_DATASOURCE)) && fDisplay)
				odtLog<<wszDataSourceFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_DATASOURCE | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_DATASOURCEINFO)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO), DBPROPFLAGS_DATASOURCEINFO)) && fDisplay)
				odtLog<<wszDataSourceInfoFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_DATASOURCEINFO | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_DBINIT)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT), DBPROPFLAGS_DBINIT)) && fDisplay)
				odtLog<<wszInitializeFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_DBINIT | DBPROPFLAGS_REQUIRED | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_INDEX)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX), DBPROPFLAGS_INDEX)) && fDisplay)
				odtLog<<wszIndexFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_INDEX | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_ROWSET)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET), DBPROPFLAGS_ROWSET)) && fDisplay)
				odtLog<<wszRowsetFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_ROWSET | DBPROPFLAGS_COLUMNOK | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_SESSION)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION), DBPROPFLAGS_SESSION)) && fDisplay)
				odtLog<<wszSessionFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_SESSION | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay )
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_TABLE)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE), DBPROPFLAGS_TABLE)) && fDisplay)
				odtLog<<wszTableFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_TABLE | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
			 	 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay )
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_TRUSTEE)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE), DBPROPFLAGS_TRUSTEE)) && fDisplay)
				odtLog<<wszTrusteeFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_TRUSTEE | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_VIEW)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW), DBPROPFLAGS_VIEW)) && fDisplay)
				odtLog<<wszViewFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_VIEW | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else if(*(g_rgDBProperties[cIndex].pGuidPropertySet) == DBPROPSET_STREAM)
		{
			if(!(COMPARE((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_STREAM), DBPROPFLAGS_STREAM)) && fDisplay)
				odtLog<<wszViewFlagNotSetAt<<cIndex<<L" \n";

			COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & ~(DBPROPFLAGS_STREAM | DBPROPFLAGS_READ | DBPROPFLAGS_WRITE), 0);
			
			if( (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCECREATE||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO	||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_VIEW			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_TRUSTEE			||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK		||
				 m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED) && fDisplay)
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}
		else
		{
			if( fDisplay )
				odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";
		}

		//dwFlags should set DBPROPFLAGS_READ
		if(!(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_READ) && fDisplay)
			odtLog<<wszReadFlagNotSetAt<<cIndex<<L" \n";

		//dwFlags should not set to these
		if( m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_NOTSUPPORTED	||
			(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMNOK	&&
			!(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET))	||
			(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_REQUIRED	&&
			!(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT)) && fDisplay)
			odtLog<<wszInvalidFlagSetAt<<cIndex<<L" \n";

		//dwFlags should set DBPROPFLAGS_WRITE if the property is writable
		if(g_rgDBProperties[cIndex].fSettable)
		{
			if(!(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE))
			{
				if( fDisplay )
					odtLog<<wszWriteFlagNotSetAt<<cIndex<<L" \n";
				//Provider does not have to return what is in spec
				g_rgDBProperties[cIndex].fSettable = FALSE;
			}
		}
		else
		{
			if(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE)
			{
				if( fDisplay )
					odtLog<<wszWriteFlagSetAt<<cIndex<<L" \n";
				//Provider does not have to return what is in spec
				g_rgDBProperties[cIndex].fSettable = TRUE;
			}
		}

		// Skip DBPROP_COL_DEFAULT because can return an type
		if( g_rgDBProperties[cIndex].dwPropertyID != DBPROP_COL_DEFAULT &&
			g_rgDBProperties[cIndex].dwPropertyID != DBPROP_COL_INCREMENT &&
			g_rgDBProperties[cIndex].dwPropertyID != DBPROP_COL_SEED )
		{
			//Compare the vtType
			if(!COMPARE(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vtType, g_rgDBProperties[cIndex].vtType) && fDisplay)
				odtLog<<wszIncorrectVtType<<cIndex<<L" \n";
		}

		//Copy the default value into the array if other than VT_EMPTY
		if( m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt && 
			!(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt & VT_ARRAY) )
		{
			if(!SUCCEEDED(VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
						&(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues))))
			{
				if( fDisplay )
					odtLog<<wszDefaultValueFailed<<cIndex<<L" \n";
				goto END;
			}
		}

		// Check the vt returned for vValues
		if( ((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE) &&
			 ((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != VT_EMPTY) &&
			  (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != (VT_ARRAY | VT_BSTR)) &&
			  (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != (VT_ARRAY | VT_I4)) &&
			  (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != (VT_ARRAY | VT_I2)) &&
			  ((m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != VT_I4) &&
			   (m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != VT_I2)))) &&
			(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->vValues.vt != VT_EMPTY))
		{
			if( fDisplay )
				odtLog<<wszDefaultValueFailed<<cIndex<<L" \n";
			goto END;
		}
	}

	fPass=TRUE;

END:
	//Free memory from GetPropertyInfo
	if( FreeMemory )
		FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Verify non-supported IDBProperties::GetPropertyInfo
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyGetPropInfoNotSupported(ULONG cIndex, BOOL fInitialized, ULONG cPropset, ULONG cPropertyInfoSets, BOOL FreeMemory)
{				
	BOOL fPass = FALSE;

	// Check for return DBProperties
	TESTC(m_pcPropertyInfoSets == cPropertyInfoSets);

	// Check DBPROPINFOSET.guidPropertySet
	TESTC(m_prgPropertyInfoSets[cPropset].guidPropertySet == *(g_rgDBProperties[cIndex].pGuidPropertySet));

	// Check DBPROPINFOSET.cPropertyInfos
	TESTC(m_prgPropertyInfoSets[cPropset].cPropertyInfos == 1);

	// Check dwPropertyID
	TESTC(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwPropertyID == g_rgDBProperties[cIndex].dwPropertyID);

	// Check *ppDescBuffer for a Null pointer
	if( cPropertyInfoSets == 1)
		TESTC(!m_ppDescBuffer);

	TESTC(!m_prgPropertyInfoSets[cPropset].rgPropertyInfos->pwszDescription);

	// Check dwFlags
	// Property should be not supported
	TESTC(m_prgPropertyInfoSets[cPropset].rgPropertyInfos->dwFlags == DBPROPFLAGS_NOTSUPPORTED);

	if( fInitialized || m_prgPropertyInfoSets[cPropset].guidPropertySet == DBPROPSET_DBINIT )
		TESTC(g_rgDBProperties[cIndex].fSupported == FALSE);

	fPass=TRUE;

CLEANUP:

	// Free memory from GetPropertyInfo
	if( FreeMemory )
		FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Test GetPropertyInfo for an index
//
//-----------------------------------------------------------------------------
BOOL  TCIDProperties::GetPropInfoTest(ULONG ulDex, BOOL fInitialized)
{
	BOOL fSuccess = FALSE;

	//Assignment
	m_rgPropertyIDs[0] = g_rgDBProperties[ulDex].dwPropertyID;
	m_rgPropertyIDSets[0].guidPropertySet = *g_rgDBProperties[ulDex].pGuidPropertySet;

	//GetPropertyInfo with an Initialized pointer
	if( fInitialized )
		m_hr=m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
					&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	else
		m_hr=m_pIDBPropUninit->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
					&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	TEST2C_(m_hr, S_OK, DB_E_ERRORSOCCURRED);
	
	if( (m_hr == S_OK && !COMPARE(VerifyGetPropInfo(ulDex, fInitialized), TRUE)) ||
		(m_hr == DB_E_ERRORSOCCURRED && !COMPARE(VerifyGetPropInfoNotSupported(ulDex, fInitialized), TRUE)) )
		odtLog <<L"GetPropertyInfo for " <<g_rgDBProperties[ulDex].wszDescription 
			   <<L" didn't return expected value while initialized." <<ENDL;

	fSuccess = TRUE;

CLEANUP:

	return fSuccess;
}

//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all Column, Data Source, DataSourceInfo,
//			Initialization, Index, Rowset, Session, and Table properties
//
//-----------------------------------------------------------------------------
BOOL  TCIDProperties::InitGetPropInfoDefault()
{
	ULONG			cSetCount;
	ULONG			cPropertyCount;
	ULONG			cIndex;
	ULONG			cPrptSupported=0;
	ULONG			cPropertyInfoSets=0;
	DBPROPINFOSET *	pPropertyInfoSets=NULL;
	OLECHAR *		pDescBuffer=NULL;
	BOOL			fPass=FALSE;

	// Initialize back to 0
	g_ulExtraCOLProp=g_ulExtraDSOProp=g_ulExtraDSOInfoProp=g_ulExtraDBInitProp=g_ulExtraIDXProp=g_ulExtraROWProp=g_ulExtraSESProp=g_ulExtraTBLProp=0;
	g_ulCOLProp=g_ulDSOProp=g_ulDSOInfoProp=g_ulDBInitProp=g_ulIDXProp=g_ulROWProp=g_ulSESProp=g_ulTBLProp=0;

	//Call IDBProperties::GetPropertyInfo to get all the properties
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(0,NULL,&cPropertyInfoSets,
			&pPropertyInfoSets, &pDescBuffer), S_OK))
		goto END;

	//At least one property set should be returned
	if(!cPropertyInfoSets)
	{
		odtLog<<"The provider doesn't support any Properties."<<ENDL;
		fPass=TRUE;
		goto END;
	}

	//Set the default value for each property set
	for(cSetCount=0;cSetCount<cPropertyInfoSets;cSetCount++)
	{
		cPrptSupported = cPrptSupported + pPropertyInfoSets[cSetCount].cPropertyInfos;

		//Make sure we get at least 1 property
		if(!pPropertyInfoSets[cSetCount].cPropertyInfos)
			COMPARE(pPropertyInfoSets[cSetCount].cPropertyInfos, 1);

		//Set the DBPropertyInfoSet
		if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_COLUMN) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN) )
			g_ulCOLProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCE) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE) )
			g_ulDSOProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCEINFO) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO) )
			g_ulDSOInfoProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_INDEX) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX) )
			g_ulIDXProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_DBINIT) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT) )
			g_ulDBInitProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_ROWSET) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET) )
			g_ulROWProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_SESSION) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION) )
			g_ulSESProp++;
		else if( (pPropertyInfoSets[cSetCount].guidPropertySet == DBPROPSET_TABLE) &&
			(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE) )
			g_ulTBLProp++;
		else
		{
			//Check to see if the Provider has Provider specific PropInfoSets
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_COLUMN)
				g_ulExtraCOLProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCE)
				g_ulExtraDSOProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DATASOURCEINFO)
				g_ulExtraDSOInfoProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_DBINIT)
				g_ulExtraDBInitProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_INDEX)
				g_ulExtraIDXProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_ROWSET)
				g_ulExtraROWProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_SESSION)
				g_ulExtraSESProp++;
			if(pPropertyInfoSets[cSetCount].rgPropertyInfos->dwFlags & DBPROPFLAGS_TABLE)
				g_ulExtraTBLProp++;
			
			// Add 1 to the Extra PropInfo counter
			g_ulExtraGetPropInfo++;
		}

		//Go through each property
		for(cPropertyCount=0; cPropertyCount<pPropertyInfoSets[cSetCount].cPropertyInfos; cPropertyCount++)
		{
			//Go through the whole list
			for(cIndex=IDX_OLEDB_START; cIndex<=(g_ulExtraGetPropInfo ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END);cIndex++)
			{
				//Search for the properties
				if((g_rgDBProperties[cIndex].dwPropertyID ==
					pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].dwPropertyID) &&
					(*(g_rgDBProperties[cIndex].pGuidPropertySet) == 
					pPropertyInfoSets[cSetCount].guidPropertySet))
				{
					//Check to see that it is Empty
					if( pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt &&
						!(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt & VT_ARRAY) )
						odtLog<<"ERROR: "<<g_rgDBProperties[cIndex].wszDescription<<" should be VT_EMPTY. \n ";

					//Set the property to supported
					g_rgDBProperties[cIndex].fSupported=TRUE;

					//Copy the default
					if( pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt )
					{
						if(!(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt & VT_ARRAY))
							VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
								&(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues));
					}

					//Check pwszDescription
					if(!COMPARE(0, wcscmp(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].pwszDescription, 
									g_rgDBProperties[cIndex].wszDescription)))
						  odtLog<<L"The description is not same at "<<cIndex<<L" \n";

					// Skip DBPROP_COL_DEFAULT because can return an type
					if( g_rgDBProperties[cIndex].dwPropertyID == DBPROP_COL_DEFAULT   ||
						g_rgDBProperties[cIndex].dwPropertyID == DBPROP_COL_INCREMENT ||
						g_rgDBProperties[cIndex].dwPropertyID == DBPROP_COL_SEED )
						break;

					//Check VT type
					COMPARE(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vtType,
							g_rgDBProperties[cIndex].vtType);

					//Check vValues.vt type
					if((pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt & ~VT_ARRAY) !=
							g_rgDBProperties[cIndex].vtType)
					{
						if(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt!=VT_EMPTY)
							odtLog<<L"The vt in vValue is not correct at index "<<cIndex<<"!\n";
						else
							break;
					}

					//If VT==VT_BOOL, the value has to be either VAIANT_TRUE or VARIANT_FALSE
					if(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt==
						VT_BOOL)
					{
						if((V_BOOL(&pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues)!=VARIANT_TRUE) &&
							(V_BOOL(&pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues)!=VARIANT_FALSE))
							odtLog<<L"The bool is not VARIANT_TRUE or VARIANT_FALSE at index "<<cIndex<<"!\n";
					}
					else
					{
						if(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.vt==VT_EMPTY)
						{
							//The value has to be 0
							if(pPropertyInfoSets[cSetCount].rgPropertyInfos[cPropertyCount].vValues.lVal!=0)
								odtLog<<L"The lVal is not 0 at index "<<cIndex<<"!\n";
						}
					}
					
					break;
				}
			}
			
			// Check the Index count with the total number of properties
			if(cIndex > (g_ulExtraGetPropInfo ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END))
			{
				if(g_ulExtraGetPropInfo)
					odtLog<<L"The Provider returned provider specific properties.\n";
				else
					odtLog<<L"ERROR: A OLEDB Property has the wrong guidPropertySet!\n";
			}
		}
	}
	odtLog<<L"The total number of properties supported from IDBProperties::GetPropertyInfo is "<<cPrptSupported<<L" \n";
	
	if(g_ulExtraGetPropInfo)
		odtLog<<L"The Total includes Provider specific properties"<<L" \n";

	fPass=TRUE;

END:
	//Free memory from GetPropertyInfo
	FreeProperties(&cPropertyInfoSets, &pPropertyInfoSets, &pDescBuffer);
	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all Data Source, Data Source
//			Information, and initialization properties
//
//-----------------------------------------------------------------------------
BOOL  TCIDProperties::InitGetPropDefault(BOOL fInitialized)
{
	ULONG		cSetCount;
	ULONG		cPropertyCount;
	ULONG		cIndex;
	ULONG		cPropertySets=0;
	ULONG		cPrptSupported=0;
	DBPROPSET	*pPropertySets=NULL;
	BOOL		fPass=FALSE;
	ULONG		ExtraCnt=0;

	//Call IDBProperties::GetProperties to get all the properties
	if(!CHECK(m_pIDBProperties->GetProperties(0,NULL,&cPropertySets,
			&pPropertySets), S_OK))
		goto END;

	//At least one property set should be returned
	if(!cPropertySets)
	{
		odtLog<<"The provider doesn't support any Properties."<<ENDL;
		fPass=TRUE;
		goto END;
	}

	//Set the default value for each property set
	for(cSetCount=0;cSetCount<cPropertySets;cSetCount++)
	{
		cPrptSupported = cPrptSupported + pPropertySets[cSetCount].cProperties;

		//Check to see if the Provider has Provider specific PropSets
		if( (pPropertySets[cSetCount].guidPropertySet != DBPROPSET_DATASOURCE) &&
			(pPropertySets[cSetCount].guidPropertySet != DBPROPSET_DATASOURCEINFO) &&
			(pPropertySets[cSetCount].guidPropertySet != DBPROPSET_DBINIT) )
		{
			//Total the number of Extra PropertySets
			ExtraCnt++;
			g_ulExtraGetProp++;
		}

		//Make sure we get at least 1 property
		if(!pPropertySets[cSetCount].cProperties)
			COMPARE(pPropertySets[cSetCount].cProperties, 1);

		//Go through each property
		for(cPropertyCount=0; cPropertyCount<pPropertySets[cSetCount].cProperties; 
		cPropertyCount++)
		{
			//Check to see if the Provider has returned an invalid PropSets
			if( (pPropertySets[cSetCount].guidPropertySet == DBPROPSET_COLUMN) || 
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_INDEX)  ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_PROPERTIESINERROR) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_ROWSET) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_SESSION)||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_TABLE) )
				odtLog<<L"ERROR: An Invalid OLEDB PropertySet has been returned by IDBProperties::GetProperties!\n";

			//Go through the whole list
			for(cIndex=IDX_OLEDB_START; 
			cIndex<=(g_ulExtraGetProp ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END);cIndex++)
			{
				//Search for the properties
				if((g_rgDBProperties[cIndex].dwPropertyID ==
					pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID) &&
					(*(g_rgDBProperties[cIndex].pGuidPropertySet) == 
					pPropertySets[cSetCount].guidPropertySet))
				{
					//Print the value to the screen
					odtLog<<"      "<<g_rgDBProperties[cIndex].wszDescription<<" = ";
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt)
						odtLog<<pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue<<L" \n";
					else
						odtLog<<L"VT_EMPTY \n";

					//Set the property to supported
					g_rgDBProperties[cIndex].fSupported=TRUE;

					//Copy the default
					if( pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt )
					{
						VariantClear(&g_rgDBProperties[cIndex].vDefault);
						VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
							&(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue));
					}
					else
						VariantClear(&g_rgDBProperties[cIndex].vDefault);

					//dwStatus has to be DBPROPSTATUS_OK
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwStatus!=
						DBPROPSTATUS_OK)
						odtLog<<L"The dwStatus in default is not DBPROPSTATUS_OK at index "<<cIndex<<"!\n";

					//Check VT type
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=
							g_rgDBProperties[cIndex].vtType)
					{
						if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=VT_EMPTY)
							odtLog<<L"The vt in vValue is not correct at index "<<cIndex<<"!\n";
						else
							break;
					}

					//If VT==VT_BOOL, the value has to be either VAIANT_TRUE or VARIANT_FALSE
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
						VT_BOOL)
					{
						if((V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_TRUE) &&
							(V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_FALSE))
							odtLog<<L"The bool is not VARIANT_TRUE or VARIANT_FALSE at index "<<cIndex<<"!\n";
					}
					else
					{
						if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==VT_EMPTY)
						{
							//The value has to be 0
							if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.lVal!=0)
								odtLog<<L"The lVal is not 0 at index "<<cIndex<<"!\n";
						}
						else if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
							VT_BSTR)
						{
							//Check certain defined BSTR values
							if( (pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID == DBPROP_DBMSVER)	   ||
								(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID == DBPROP_PROVIDERVER) ||
								(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID == DBPROP_PROVIDERNAME)||
								(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID == DBPROP_PROVIDEROLEDBVER) )
								CheckVersions(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID,
											  pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.bstrVal);
						}
					}

					break;
				}
			}
			
			// Check the Index count with the total number of properties
			if(cIndex > (g_ulExtraGetProp ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END))
			{
				if(g_ulExtraGetProp)
					odtLog<<L"This autotest needs to be updated with Provider specific properties!\n";
				else
					odtLog<<L"ERROR: A OLEDB Property has the wrong guidPropertySet!\n";
			}
		}
	}
	odtLog<<wszTotalGetPropertiesIs<<cPrptSupported<<L" \n";
	
	if(g_ulExtraGetProp)
		odtLog<<L"The Total includes Provider specific properties"<<L" \n";

	//Check to see if GetProperties is the same as GetPropertyInfo
	COMPARE(ExtraCnt,(ULONG)((!fInitialized ? (g_ulExtraDBInitProp) : 
						(g_ulExtraDSOProp+g_ulExtraDSOInfoProp+g_ulExtraDBInitProp))));

	COMPARE(cPropertySets,(ULONG)((!fInitialized ? (g_ulDBInitProp+g_ulExtraDBInitProp) : 
		(g_ulDSOProp+g_ulExtraDSOProp+g_ulDSOInfoProp+g_ulExtraDSOInfoProp+g_ulDBInitProp+g_ulExtraDBInitProp))));

	fPass=TRUE;

END:
	//Free memory from GetProperties
	FreeProperties(&cPropertySets, &pPropertySets);
	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all command properties
//
//-----------------------------------------------------------------------------
void  TCIDProperties::CheckVersions(DBPROPID dwPropertyID,BSTR bstrVal)
{
	// Create a temporary bstrValue
	BSTR bstrTmp = SysAllocString(bstrVal);
	ULONG cch = 0;
	ULONG ulErrors=0;

	// Check the DBPROP_DBMSVER
	switch(dwPropertyID)
	{
		// Example ##.##
		case DBPROP_PROVIDEROLEDBVER:
		// Example ##.##.####
		case DBPROP_DBMSVER:
		case DBPROP_PROVIDERVER:
			
/*			// Compare the lengths
			if(dwPropertyID == DBPROP_PROVIDEROLEDBVER)
				COMPARE(wcslen(bstrTmp), 5);
// asady:
//	This test is not required, because all providers
// dont necessarily have version length greater than 10.
//			else
//				COMPARE((wcslen(bstrTmp) >= 10), 1);

			// Check the characters
			for(cch=0; ((cch < wcslen(bstrTmp)) && (cch < 10)); cch++)
			{
				// Valid values are 0-9	and decimal	point
				if(cch != 2 && cch != 5)
				{
					// Valid values are 0-9
					if( !((wcsncmp((bstrTmp+cch), L"0", 1) >= 0) &&
						  (wcsncmp((bstrTmp+cch), L"9", 1) <= 0)) )
						ulErrors++;
				}
				else if(wcsncmp((bstrTmp+cch), L".", 1))
					ulErrors++;
			}

			COMPARE(ulErrors, 0);
*/
			// Version number will start with a digit and end with a digit
			COMPARE(isdigit(bstrTmp[0]) && 
				isdigit(bstrTmp[wcslen(bstrTmp) - 1]), 1);
			for(cch = 0; cch < wcslen(bstrTmp); cch++)
				if (!isdigit(bstrTmp[cch]) && bstrTmp[cch] != L'.')
					ulErrors++;
			COMPARE(ulErrors, 0);
			break;

		// Example MSDASQL.DLL
		case DBPROP_PROVIDERNAME:
			COMPARE((wcsstr((_wcsupr(bstrTmp)), L".DLL") != 0), TRUE);
			break;
		
		default:
			break;
	}

	// Free the memory
	SysFreeString(bstrTmp);
}


//-----------------------------------------------------------------------------
//@mfunc: Intialize the default values for all command properties
//
//-----------------------------------------------------------------------------
BOOL  TCIDProperties::InitCommandProperties()
{
	ULONG		cSetCount;
	ULONG		cPropertyCount;
	ULONG		cIndex;
	ULONG		cPropertySets=0;
	ULONG		cPrptSupported=0;
	DBPROPSET	*pPropertySets=NULL;
	HRESULT		hr;
	BOOL		fPass=FALSE;
	ULONG		ExtraCnt=0;
	
	ICommandProperties * pICommandProperties=NULL;
	IRowsetInfo *		 pIRowsetInfo=NULL;

	//Create a command object, asking for ICommandProperties pointer
	if(m_pIDBCreateCommand)
	{
		//Get a ICommandProperties
		if(!CHECK(hr=m_pIDBCreateCommand->CreateCommand(NULL,IID_ICommandProperties,
											(IUnknown **)&pICommandProperties), S_OK))
			goto END;

		//Call ICommandProperties::GetProperties to get all the properties
		if(!CHECK(hr=pICommandProperties->GetProperties(0,NULL,&cPropertySets,
				&pPropertySets), S_OK))
			goto END;
	}

	//Create a rowset object,
	if(m_pIOpenRowset)
	{
		// Create a table we'll use for the whole test module,
		m_pTable = new CTable(m_pIOpenRowset, (LPWSTR)gwszModuleName);
		if(!m_pTable)
			goto END;

		hr=m_pTable->CreateTable(0);
		if(FAILED(hr))
			goto END;

		// Create the rowset object.
		if(CreateRowsetObject(USE_OPENROWSET) != S_OK)
			goto END;

		if(!VerifyInterface(m_pIAccessor, IID_IRowsetInfo, 
								ROWSET_INTERFACE, (IUnknown **)&pIRowsetInfo))
			goto END;

		//Call pIRowsetInfo::GetProperties to get all the properties
		if(!CHECK(hr=pIRowsetInfo->GetProperties(0,NULL,&cPropertySets,
				&pPropertySets), S_OK))
			goto END;
	}

	//At least one property set should be returned
	if(!cPropertySets)
	{
		odtLog<<"The provider doesn't support any Rowset Properties."<<ENDL;
		fPass=TRUE;
		goto END;
	}

	//Set the default value for each property set
	for(cSetCount=0;cSetCount<cPropertySets;cSetCount++)
	{
		cPrptSupported = cPrptSupported + pPropertySets[cSetCount].cProperties;

		//Make sure we get at least 1 property
		if(!pPropertySets[cSetCount].cProperties)
			COMPARE(pPropertySets[cSetCount].cProperties, 1);

		//Check to see if the Provider has Provider specific PropSets
		if( (pPropertySets[cSetCount].guidPropertySet != DBPROPSET_ROWSET) )
			ExtraCnt++;

		//Go through each property
		for(cPropertyCount=0; cPropertyCount<pPropertySets[cSetCount].cProperties; 
		cPropertyCount++)
		{
			//Check to see if the Provider has returned an invalid PropSets
			if( (pPropertySets[cSetCount].guidPropertySet == DBPROPSET_COLUMN) || 
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCE) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DATASOURCEINFO) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_DBINIT) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_INDEX)  ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_PROPERTIESINERROR) ||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_SESSION)||
				(pPropertySets[cSetCount].guidPropertySet == DBPROPSET_TABLE) )
				odtLog<<L"ERROR: An Invalid OLEDB PropertySet has been returned by ICommandProperties::GetProperties!\n";

			//Go through the whole list
			for(cIndex=IDX_ROWSET_START; cIndex<=(g_ulExtraROWProp ? IDX_PROVIDERSPEC_END : IDX_ROWSET_END); cIndex++)
			{
				//Search for the properties
				if((g_rgDBProperties[cIndex].dwPropertyID ==
					pPropertySets[cSetCount].rgProperties[cPropertyCount].dwPropertyID) &&
					(*(g_rgDBProperties[cIndex].pGuidPropertySet) == 
					pPropertySets[cSetCount].guidPropertySet))
				{
					//Print the value to the screen, used for dubugging purposes
//					odtLog<<"      "<<g_rgDBProperties[cIndex].wszDescription<<" = "
//						<<pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue<<L" \n";

					//Set the property to supported
					g_rgDBProperties[cIndex].fSupported=TRUE;

					//Copy the default
					VariantCopy(&(g_rgDBProperties[cIndex].vDefault),
					&(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue));

					//dwStatus has to be DBPROPSTATUS_OK
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].dwStatus!=
						DBPROPSTATUS_OK)
						odtLog<<L"The dwStatus in default is not DBPROPSTATUS_OK at index "<<cIndex<<"!\n";

					//Check VT type
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=
							g_rgDBProperties[cIndex].vtType)
					{
						if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt!=VT_EMPTY)
							odtLog<<L"The vt in vValue is not correct at index "<<cIndex<<"!\n";
						else
							break;
					}

					//If VT==VT_BOOL, the value has to be either VAIANT_TRUE or VARIANT_FALSE
					if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==
						VT_BOOL)
					{
						if((V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_TRUE) &&
							(V_BOOL(&pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue)!=VARIANT_FALSE))
							odtLog<<L"The bool is not VARIANT_TRUE or VARIANT_FALSE at index "<<cIndex<<"!\n";
					}
					else
					{
						if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.vt==VT_EMPTY)
						{
							//The value has to be 0
							if(pPropertySets[cSetCount].rgProperties[cPropertyCount].vValue.lVal!=0)
								odtLog<<L"The lVal is not 0 at index "<<cIndex<<"!\n";
						}
					}

					break;
				}
			}
			// Check the Index count with the total number of properties
			if(cIndex > (g_ulExtraROWProp ? IDX_PROVIDERSPEC_END : IDX_ROWSET_END))
			{
				if(g_ulExtraROWProp)
					odtLog<<L"This autotest needs to be updated with Provider specific properties!\n";
				else
					odtLog<<L"ERROR: A OLEDB Property has the wrong guidPropertySet!\n";
			}
		}
	}
	if(m_pIDBCreateCommand)
		odtLog<<L"The total number of properties supported from ICommandProperties::GetProperty is "<<cPrptSupported<<L" \n";
	else
		odtLog<<L"The total number of properties supported from IRowsetInfo::GetProperty is "<<cPrptSupported<<L" \n";

	if(g_ulExtraROWProp)
		odtLog<<L"The Total includes Provider specific properties"<<L" \n";

	//Check to see if GetProperties is the same as GetPropertyInfo
	COMPARE(ExtraCnt >= g_ulExtraROWProp, TRUE);
	if(ExtraCnt > g_ulExtraROWProp)
	{
		odtLog<<L"INFO: There were "<<ExtraCnt-g_ulExtraROWProp<<L" property sets for which the flag was not DBPROPFLAGS_ROWSET.\n";
		COMPAREW(ExtraCnt, g_ulExtraROWProp);
	}
	COMPARE(cPropertySets, g_ulROWProp+ExtraCnt);

	fPass=TRUE;

END:
	//Free memory from GetProperties
	FreeProperties(&cPropertySets, &pPropertySets);

	//Release the ICommandProperties pointer
	SAFE_RELEASE(pICommandProperties);

	//Release the IRowssetInfo pointer
	SAFE_RELEASE(pIRowsetInfo);

	// Cleanup the Rowset Objects created
	ReleaseRowsetObject();		//Rowset
	ReleaseDBSession();			//Session
	ReleaseDataSourceObject();	//DataSource

	// Clean up the Table
	if( m_pTable )
	{
		m_pTable->DropTable();
		SAFE_DELETE(m_pTable);
	}

	return fPass;
}


//--------------------------------------------------------------------
//@cmember: Get a not supported DataSource property
//
BOOL TCIDProperties::NotSupportedProperty(DBPROPID *dwPropertyID, ULONG IndexStart, ULONG IndexEnd)
{
	ULONG cPrpt;

	for(cPrpt=IndexStart;cPrpt<=IndexEnd;cPrpt++)
	{
		if(!(g_rgDBProperties[cPrpt].fSupported) && 
			(g_rgDBProperties[cPrpt].vtType==VT_BOOL)
			)
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a supported DataSource property
//
BOOL TCIDProperties::SupportedProperty(DBPROPID *dwPropertyID, ULONG IndexStart, ULONG IndexEnd)
{
	ULONG cPrpt;

	for(cPrpt=IndexStart;cPrpt<=IndexEnd;cPrpt++)
	{
		if(g_rgDBProperties[cPrpt].fSupported)
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a settable DataSourceInfo property
//
BOOL TCIDProperties::DataSourceInfoSettable(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_DATASOURCEINFO_START;cPrpt<=(ULONG)IDX_DATASOURCEINFO_END;cPrpt++)
	{
		if(g_rgDBProperties[cPrpt].fSettable && g_rgDBProperties[cPrpt].fSupported)
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//--------------------------------------------------------------------
//@cmember: Get a DataSourceInfo property that is not settable 
//
BOOL TCIDProperties::DataSourceInfoNotSettable(DBPROPID *dwPropertyID)
{
	ULONG cPrpt;

	for(cPrpt=IDX_DATASOURCEINFO_START;cPrpt<=(ULONG)IDX_DATASOURCEINFO_END;cPrpt++)
	{
		if(!(g_rgDBProperties[cPrpt].fSettable) && (g_rgDBProperties[cPrpt].fSupported) )
		{
			*dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
			return TRUE;
		}
	}

	return FALSE;
}


//-----------------------------------------------------------------------------
//@mfunc: Verify supported IDBProperties::GetPropertyInfo Sets
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyPropInfoSets(GUID guidPropertySet)
{				
	BOOL			fPass=FALSE;
	ULONG			cIndex=0;
	ULONG			cProps=0;
	ULONG			cPrpts=0;
	ULONG			cPropSets=0;

	//Get the property set to check
	for(cPropSets=0; cPropSets<m_pcPropertyInfoSets; cPropSets++)
	{
		if(m_prgPropertyInfoSets[cPropSets].guidPropertySet == guidPropertySet)
			break;
	}
	
	//Fail if property set was not found
	if(cPropSets >= m_pcPropertyInfoSets)
	{
		//if 0, NULL then provider may not support the PropertySet
		if(!m_cPropertyIDSets)
			fPass=TRUE;
	
		goto END;
	}

	//Find all of the properties from the property set
	for(cIndex=IDX_OLEDB_START; cIndex<=(g_ulExtraGetPropInfo ? IDX_PROVIDERSPEC_END : IDX_OLEDB_END); cIndex++)
	{
 		if((*(g_rgDBProperties[cIndex].pGuidPropertySet) != guidPropertySet) ||
				(g_rgDBProperties[cIndex].fSupported == FALSE))
			continue;

		for(cProps=0; cProps<m_prgPropertyInfoSets[cPropSets].cPropertyInfos; cProps++)
		{
			//Check dwPropertyID
			if(m_prgPropertyInfoSets[cPropSets].rgPropertyInfos[cProps].dwPropertyID !=
					g_rgDBProperties[cIndex].dwPropertyID)
				continue;

			//Increment counter
			cPrpts++;

			//Check the description
			if(m_ppDescBuffer)
				COMPARE(0, wcscmp(m_prgPropertyInfoSets[cPropSets].rgPropertyInfos[cProps].pwszDescription, 
								  g_rgDBProperties[cIndex].wszDescription));
			else
				COMPARE(m_prgPropertyInfoSets[cPropSets].rgPropertyInfos[cProps].pwszDescription, NULL);

			break;
		}
		if(cProps > m_prgPropertyInfoSets[cPropSets].cPropertyInfos)
			goto END;
	}

	if(!COMPARE(cPrpts,	m_prgPropertyInfoSets[cPropSets].cPropertyInfos))
		goto END;

	odtLog<<"Count of properties returned from Property Set ALL = "<<cPrpts<<L" \n";

	fPass=TRUE;

END:
	return fPass;
}


//-----------------------------------------------------------------------------
// @cmember Recreate a new Data Source object, start from scratch
//
BOOL TCIDProperties::ResetProperties()
{
	//Reset the values
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return TRUE;
}


//-----------------------------------------------------------------------------
// @cmember Verify the attribute of the property
//
BOOL TCIDProperties::VerifyProperty
(	ULONG cPrpt,			//@[in] The index to g_rgDBProperties array
	BOOL  fIReadData,		//@[in] IReadData
	ULONG cImpPrpt,			//@[in] The count of implied properties
	ULONG rgIDXPrpt[],		//@[in] The implied properties array
	BOOL fInitialized		//@[in] If Provider is Initialized
)
{
	switch (GetPrptAttr(cPrpt,fInitialized))
	{
		case PROPERTY_NOT_SUPPORTED:
			return(VerifyNotSupported(cPrpt,PROPERTY_NOT_SUPPORTED,fInitialized));

		case PROPERTY_NOT_SETTABLE:
			BOOL fReturn;
			if (fReturn=VerifyPropertyNotSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,TRUE, fInitialized))
				fReturn=VerifyPropertyNotSettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,FALSE, fInitialized);
			return fReturn;

		case PROPERTY_SETTABLE:
				return(VerifyPropertySettable(cPrpt,fIReadData,cImpPrpt,rgIDXPrpt,TRUE));

		case PROPERTY_INVALID:
				odtLog<<wszIndexNotValid;
		default:
				return FALSE;
	}
}


//--------------------------------------------------------------------
//@mfunc: Get the attribute of the property
//
EPROPERTYATTR TCIDProperties::GetPrptAttr(const ULONG cPrpt,BOOL fInitialized)
{
	if (cPrpt >= g_cDBProperties)
		return PROPERTY_INVALID;

	//Check if the property is supported
	//Check if the property set is not DBINIT or DATASOURCE
	//Check if it is uninitialized and a DSO
	if ( (!g_rgDBProperties[cPrpt].fSupported) ||
		 (((!fInitialized) && (*(g_rgDBProperties[cPrpt].pGuidPropertySet) != DBPROPSET_DBINIT)) ||
		  ((fInitialized) && 
		   ((*(g_rgDBProperties[cPrpt].pGuidPropertySet) != DBPROPSET_DBINIT) &&
			(*(g_rgDBProperties[cPrpt].pGuidPropertySet) != DBPROPSET_DATASOURCE) &&
		    (*(g_rgDBProperties[cPrpt].pGuidPropertySet) != DBPROPSET_DATASOURCEINFO)))) )
			return PROPERTY_NOT_SUPPORTED;
	
	//Check if the property is settable and it is not a DBINIT property and Initialized.
	if ((g_rgDBProperties[cPrpt].fSettable) && 
		(((fInitialized)  && (*(g_rgDBProperties[cPrpt].pGuidPropertySet) != DBPROPSET_DBINIT)) ||
		 ((!fInitialized) && (*(g_rgDBProperties[cPrpt].pGuidPropertySet) == DBPROPSET_DBINIT))))
			return PROPERTY_SETTABLE;

	return (PROPERTY_NOT_SETTABLE);
}


//------------------------------------------------------------------------------------
// @cmember: Verify the property is not supported
//
BOOL TCIDProperties::VerifyNotSupported
(	ULONG cPrpt,				//@[in]: The index to g_rgDBProperties array
	EPROPERTYATTR ePrptAttr,	//@[in]: PROPERTY_NOT_SUPPORTED
	BOOL fInitialized			//@[in]: If the Provider is Initialized
)
{
	DBPROPIDSET			DBPropIDSet;
	DBPROPID			DBPropID;
	DBPROPSET			DBPropSet;
	DBPROP				DBProp;
	DBPROPSET			*pDBPropSet=NULL;
	ULONG				cDBPrpt=0;
	BOOL				fPass=FALSE;

	//Need to be initialized before calling VariantCopy function
	memset(&DBProp ,0,sizeof(DBPROP));
	DBProp.vValue.vt = VT_EMPTY;

	if(ePrptAttr!=PROPERTY_NOT_SUPPORTED)
		return FALSE;

	//Start from scratch
	if(!ResetProperties())
		return FALSE;

	//Init
	DBSTATUS ExpStatus=DBPROPSTATUS_NOTSUPPORTED; 
	DBPropIDSet.rgPropertyIDs=&DBPropID;
	DBPropSet.rgProperties=&DBProp;

	//Verify that the property is not supported by calling GetProperties
	//set DBPROPIDSET
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	// Get to Property before Setting
	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),DB_E_ERRORSOCCURRED))
		goto END;

	//Verify the result against its default values
	if(!VerifyDBPropGet(cPrpt,pDBPropSet,ExpStatus,TRUE))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	if ((fInitialized) && 
		(DBPROPSET_DBINIT == *(g_rgDBProperties[cPrpt].pGuidPropertySet)))
		ExpStatus = DBPROPSTATUS_NOTSETTABLE;

	//Try to unset the property
	//Init DBPropSet
	if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
		goto END;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED))
		goto END;

	if(!VerifyDBPropSet(cPrpt,&DBPropSet,ExpStatus,DBPROPOPTIONS_REQUIRED,FALSE))
		goto END;

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet), DB_E_ERRORSOCCURRED))
		goto END;

	if(!VerifyDBPropSet(cPrpt,&DBPropSet,ExpStatus,DBPROPOPTIONS_REQUIRED,TRUE))
		goto END;
	
	//Free the BSTR allocated
	if(DBPropSet.rgProperties->vValue.vt == VT_BSTR)
		SysFreeString(DBPropSet.rgProperties->vValue.bstrVal);

	//Verify that the property is not supported by calling GetProperties
	//set DBPROPIDSET
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	//Set back to NOTSUPPORTED for the GetProperties
	ExpStatus = DBPROPSTATUS_NOTSUPPORTED;
	
	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
		&cDBPrpt,&pDBPropSet), DB_E_ERRORSOCCURRED))
		goto END;

	if(!VerifyDBPropGet(cPrpt,pDBPropSet,ExpStatus,TRUE))
		goto END;

	fPass=TRUE;

END:
	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);
	return (fPass);
}


//-------------------------------------------------------------------------------------
// @cmember: Verify the property is not settable
//
BOOL TCIDProperties::VerifyPropertyNotSettable
(	ULONG	cPrpt,			//@[in]: The index to g_rgDBProperties array
	BOOL	fIReadData,
	ULONG	cImpPrpt,		//@[in]: The count of implied properties
	ULONG	rgIDXPrpt[],	//@[in]: The index array of implied properties
	BOOL	fSet,			//@[in]: To set or unset the property
	BOOL	fInitialized	//@[in]: Whether DSO is initialized
)
{
	DBPROPIDSET	DBPropIDSet;
	DBPROPID	DBPropID;
	DBPROPSET	DBPropSet;
	DBPROP		DBProp;
	DBPROPSET	*pDBPropSet=NULL;
	ULONG		cDBPrpt=0;
	BOOL		fPass=FALSE;
	HRESULT		Exphr = S_OK;
	DBSTATUS	ExpStatus = DBPROPSTATUS_OK; 
	VARTYPE		vt;

	//Need to be initialized before calling VariantCopy function
	memset(&DBProp ,0,sizeof(DBPROP));
	DBProp.vValue.vt = VT_EMPTY;

	//Start from scratch
	if(!ResetProperties())
		return FALSE;

	//Initialization
	DBPropIDSet.rgPropertyIDs=&DBPropID;
	DBPropSet.rgProperties=&DBProp;

	//Verify the property before execution by calling GetProperties.  
	//Init DBPROPIDSET
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet), S_OK))
		goto END;

	//Only one set should return
	if(!COMPARE(cDBPrpt, 1))
		goto END;

	//Verify the result against its default values
	if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt,&pDBPropSet);

	//Setup the expected results
	if(((fSet) && ((DBPROPSET_DATASOURCE == *(g_rgDBProperties[cPrpt].pGuidPropertySet))  || 
				   (DBPROPSET_DATASOURCEINFO == *(g_rgDBProperties[cPrpt].pGuidPropertySet))))||
	   (DBPROPSET_DBINIT == *(g_rgDBProperties[cPrpt].pGuidPropertySet)))
	{
		Exphr = DB_E_ERRORSOCCURRED;
		ExpStatus = DBPROPSTATUS_NOTSETTABLE;
	}
	else if ((DBPROPSET_DATASOURCE != *(g_rgDBProperties[cPrpt].pGuidPropertySet)) &&
			 (DBPROPSET_DATASOURCEINFO != *(g_rgDBProperties[cPrpt].pGuidPropertySet)))
	{
		Exphr = DB_E_ERRORSOCCURRED;
		ExpStatus = DBPROPSTATUS_NOTSUPPORTED;
	}

	//Initialization to set/unset the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,fSet))
		goto END;

	//Try to set the property
	//We should allow to set default value in DBPROPSET_DBINIT if DSO is not initialized.
	if((!fSet) && (!fInitialized) && (DBPROPSET_DBINIT == *(g_rgDBProperties[cPrpt].pGuidPropertySet)))
	{
		Exphr = S_OK;
		ExpStatus = DBPROPSTATUS_OK;
	}
	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),Exphr))
		goto END;

	//Verify the status value
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,ExpStatus,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Verify the property before execution by calling GetProperties.  
	//Init DBPROPIDSET
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet), S_OK))
		goto END;

	//Only one set should return
	if(!COMPARE(cDBPrpt, 1))
		goto END;

	//Verify the result against its default values
	if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
		goto END;

	//Free the BSTR allocated
	if((fSet) && (DBPropSet.rgProperties->vValue.vt == VT_BSTR))
		SysFreeString(DBPropSet.rgProperties->vValue.bstrVal);

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Save the VT_TYPE
	vt = DBPropSet.rgProperties->vValue.vt;

	//Test for bad VT_TYPE for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		DBPropSet.rgProperties->vValue.vt = VT_BOOL;
	else
		DBPropSet.rgProperties->vValue.vt = VT_I4;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSETTABLE,DBPROPOPTIONS_REQUIRED,fSet))
			goto END;

	//Set back to original VT_TYPE
	DBPropSet.rgProperties->vValue.vt = vt;

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad Value for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I2)
		V_I2(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		V_I4(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_BOOL)
		V_BOOL(&DBPropSet.rgProperties->vValue) = -3;

	//Any BSTR can have any value and HWND can take any value 
	if ((g_rgDBProperties[cPrpt].vtType == VT_BSTR) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_HWND) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_LCID) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_MODE) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_OLEDBSERVICES))
		goto SKIP;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSETTABLE,DBPROPOPTIONS_REQUIRED,fSet))
			goto END;

SKIP:
	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad dwOption for the Property
	DBPropSet.rgProperties->dwOptions = 99;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADOPTION,99,fSet))
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_NOTSETTABLE,99,fSet))
			goto END;

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	fPass=TRUE;

END:
	//Free the BSTR allocated
	if((fSet) && (DBPropSet.rgProperties->vValue.vt == VT_BSTR))
		SysFreeString(DBPropSet.rgProperties->vValue.bstrVal);

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);
	return (fPass);
}


//-------------------------------------------------------------------------------------
// @cmember: Verify the property is settable
//
BOOL TCIDProperties::VerifyPropertySettable
(	ULONG	cPrpt,			//@[in]: The index to g_rgDBProperties array
	BOOL	fIReadData,
	ULONG	cImpPrpt,		//@[in]: The count of implied properties
	ULONG	rgIDXPrpt[],	//@[in]: The index array of implied properties
	BOOL	fSet			//@[in]: To set or unset property	
)
{
	DBPROPIDSET	DBPropIDSet;
	DBPROPID	DBPropID;
	DBPROPSET	DBPropSet;
	DBPROP		DBProp;
	DBPROPSET	*pDBPropSet=NULL;
	ULONG		cDBPrpt=0;
	BOOL		fPass=FALSE;
	VARTYPE		vt;
	VARIANT		vVar;

	VariantInit(&vVar);

	//Need to be initialized before calling VariantCopy function
	memset(&DBProp ,0,sizeof(DBPROP));
	DBProp.vValue.vt = VT_EMPTY;

	//Start from scratch
	if(!ResetProperties())
		return FALSE;

	//Initialization
	DBPropIDSet.rgPropertyIDs=&DBPropID;
	DBPropSet.rgProperties=&DBProp;

	//Get the property and check the default values
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	// Get to Property before Setting
	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),S_OK))
		goto END;

	//Verify the result against its default values
	if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt,&pDBPropSet);

	//Set the property to the default value using VT_EMPTY
	if(!InitDBPropSet(cPrpt,&DBPropSet,2))
		goto END;

	//Set the properties
	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),S_OK))
		goto END;

	//Check the Status
	if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
		goto END;

	//Get the property and check the default values
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),S_OK))
		goto END;

	//Verify the result against its default values
	if(!VerifyDBPropDefault(cPrpt,pDBPropSet,FALSE))
		goto END;

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Set the property with dwOptions = DBPROPOPTIONS_OPTIONAL
	if(!InitDBPropSet(cPrpt,&DBPropSet,3))
		goto END;

	//Set the properties
	m_hr = m_pIDBProperties->SetProperties(1,&DBPropSet);

	//As long as we get back S_OK with status = OK or
	if( m_hr == S_OK )
	{
		if(!COMPARE(DBProp.dwStatus,DBPROPSTATUS_OK))
			goto END;
	}
	else
	{
		//DB_S_ERRORSOCCURRED with NOTSET it succeeded.
		if( m_hr == DB_E_ERRORSOCCURRED )
		{
			//For index server, data is validated before set, so setting "bogus string" for 
			//DBTYPE_BSTR will return DB_E_ERRORSOCCURRED and DBSTATUS will be DBSTATUS_BADVALUE
			if((DBProp.dwStatus!=DBPROPSTATUS_NOTSET)&&(DBProp.dwStatus!=DBPROPSTATUS_BADVALUE))
				goto END;
		}
		else
			goto END;
	}

	//Verify the result. Status was already verified and 
	//fSet=3 that which is the same as fSet=TRUE
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBProp.dwStatus,DBPROPOPTIONS_OPTIONAL,3))
		goto END;
	
	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Set the properties
	//For the same reason above, set bogus string could return DB_E_ERRORSOCCURRED 
	//and status DBPROPSTATUS_BADVALUE
	m_hr = m_pIDBProperties->SetProperties(1,&DBPropSet);

	//As long as we get back S_OK with status = OK or
	if( m_hr == S_OK )
	{
		//Verify the result
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,DBPROPOPTIONS_REQUIRED,TRUE))
			goto END;
	}
	else
	{
		//DB_E_ERRORSOCCURRED with BADVALUE it succeeded.
		if( m_hr == DB_E_ERRORSOCCURRED )
		{
			//Verify the result
			if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,TRUE))
				goto END;
		}
		else
			goto END;
	}

	//Try to set/unset the property
	//Initialization
	if(!fSet)
	{
		//Free memory from SetProperties
		if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
			(DBPropSet.rgProperties->vValue.bstrVal))
			VariantClear(&DBPropSet.rgProperties->vValue);

		if(!InitDBPropSet(cPrpt,&DBPropSet,FALSE))
			goto END;
	}

	//for the same reason as above, setProperties may fail with BADVALUE.
	m_hr= m_pIDBProperties->SetProperties(1,&DBPropSet);
	if((m_hr!=S_OK)&&(m_hr!=DB_E_ERRORSOCCURRED))
		goto END;

	//Verify the result
	if(m_hr==S_OK)
	{
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_OK,DBPROPOPTIONS_REQUIRED,TRUE))
			goto END;
	}
	else
	{
		if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,TRUE))
			goto END;
	}

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Verify that the property is set/unset by calling GetProperties
	//Init DBPROPID
	if(!InitDBPropIDSet(cPrpt,&DBPropIDSet))
		goto END;

	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),S_OK))
		goto END;

	//Make sure GetProperties returns the same value as SetPropeties.  
	if(!VerifyDBPropGet(cPrpt,pDBPropSet,DBPROPSTATUS_OK,fSet))
		goto END;

	//Store the value of this variant. We will use it in the 
	//following steps to verify that setting this property to
	//faulty values does not alter this valid value.
	VariantCopy(&vVar, &pDBPropSet->rgProperties->vValue);

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Save the VT_TYPE
	vt = DBPropSet.rgProperties->vValue.vt;

	//Test for bad VT_TYPE for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		DBPropSet.rgProperties->vValue.vt = VT_BOOL;
	else
		DBPropSet.rgProperties->vValue.vt = VT_I4;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

	//Verify that setting to a VT_TYPE not supported by 
	//VariantCopy fails, and the value remains unchanged.
	DBPropSet.rgProperties->vValue.vt = VT_HRESULT;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

	//Set back to original VT_TYPE
	DBPropSet.rgProperties->vValue.vt = vt;

	//Verify that the value hasn't changed
	if(!CHECK(m_pIDBProperties->GetProperties(1,&DBPropIDSet,
				&cDBPrpt,&pDBPropSet),S_OK))
		goto END;

	COMPARE(CompareVariant(&vVar, &pDBPropSet->rgProperties->vValue), TRUE);

	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);

	// ---- Verification of value complete

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad Value for the Property
	if (g_rgDBProperties[cPrpt].vtType == VT_I2)
		V_I2(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_I4)
		V_I4(&DBPropSet.rgProperties->vValue) = -3;
	else if (g_rgDBProperties[cPrpt].vtType == VT_BOOL)
		V_BOOL(&DBPropSet.rgProperties->vValue) = -3;

	//Any BSTR can have any value and HWND can take any value 
	if ((g_rgDBProperties[cPrpt].vtType == VT_BSTR) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_HWND) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_LCID) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_MODE) ||
		(g_rgDBProperties[cPrpt].dwPropertyID == DBPROP_INIT_OLEDBSERVICES))
		goto SKIP;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADVALUE,DBPROPOPTIONS_REQUIRED,fSet))
		goto END;

SKIP:
	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	//Try to set the property
	if(!InitDBPropSet(cPrpt,&DBPropSet,TRUE))
		goto END;

	//Test for bad dwOption for the Property
	DBPropSet.rgProperties->dwOptions = 99;

	if(!CHECK(m_pIDBProperties->SetProperties(1,&DBPropSet),DB_E_ERRORSOCCURRED))
		goto END;
	
	//Verify the result
	if(!VerifyDBPropSet(cPrpt,&DBPropSet,DBPROPSTATUS_BADOPTION,99,fSet))
		goto END;

	//Free memory from SetProperties
	if ((DBPropSet.rgProperties->vValue.vt == VT_BSTR) &&
		(DBPropSet.rgProperties->vValue.bstrVal))
		VariantClear(&DBPropSet.rgProperties->vValue);

	fPass=TRUE;

END:
	//Free memory from GetProperties
	FreeProperties(&cDBPrpt, &pDBPropSet);
	VariantClear(&vVar);
	return fPass;
}


//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPSET
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::InitDBPropSet
(	const ULONG		cPrpt, 
	DBPROPSET		*pDBPropSet,
	BOOL			fSet
)
{
	if(!(pDBPropSet->rgProperties))
		return FALSE;

	pDBPropSet->guidPropertySet=*(g_rgDBProperties[cPrpt].pGuidPropertySet);
	pDBPropSet->cProperties=1;
	pDBPropSet->rgProperties->dwStatus=99;

	//Set dwPropertyID and dwOptions
	pDBPropSet->rgProperties->dwPropertyID=g_rgDBProperties[cPrpt].dwPropertyID;
	if(3 != fSet)
		pDBPropSet->rgProperties->dwOptions=DBPROPOPTIONS_REQUIRED;
	else
		pDBPropSet->rgProperties->dwOptions=DBPROPOPTIONS_OPTIONAL;

	//Set value
	if(2 == fSet)
	{
		pDBPropSet->rgProperties->vValue.vt=VT_EMPTY;
	}
	else
	{
		switch(g_rgDBProperties[cPrpt].vtType)
		{
			case VT_BOOL:
			{
				pDBPropSet->rgProperties->vValue.vt=VT_BOOL;

				if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.boolVal == VARIANT_FALSE))
					V_BOOL(&pDBPropSet->rgProperties->vValue)=VARIANT_TRUE;
				else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.boolVal == VARIANT_TRUE))
					V_BOOL(&pDBPropSet->rgProperties->vValue)=VARIANT_FALSE;
				else
					V_BOOL(&pDBPropSet->rgProperties->vValue)=g_rgDBProperties[cPrpt].vDefault.boolVal;
			}
			
			break;

			case VT_I4:
			{
				pDBPropSet->rgProperties->vValue.vt=VT_I4;

				switch(cPrpt)
				{

					case IDX_DATASOURCETYPE:
						// Set the Non-Default value and the default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_DST_TDP))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_DST_TDP;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_DST_TDP))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_DST_MDP;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_RESETDATASOURCE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_RD_RESETALL;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RD_RESETALL))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_ACTIVESESSIONS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_ALTERCOLUMN:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBCOLUMNDESCFLAGS_TYPENAME;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_CATALOGLOCATION:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CL_START))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CL_START;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CL_START))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CL_END;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_CATALOGUSAGE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CU_DML_STATEMENTS;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_COLUMNDEFINITION:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CD_NOTNULL;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_CONCATNULLBEHAVIOR:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_NULL))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_NULL;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_NULL))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_NON_NULL;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_CONNECTIONSTATUS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CS_UNINITIALIZED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CS_UNINITIALIZED;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CS_UNINITIALIZED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CS_INITIALIZED;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_DSOTHREADMODEL:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_RT_FREETHREAD))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_RT_FREETHREAD;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RT_FREETHREAD))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_RT_SINGLETHREAD;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_GROUPBY:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_GB_EQUALS_SELECT))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_GB_EQUALS_SELECT;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_GB_EQUALS_SELECT))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_GB_CONTAINS_SELECT;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_HETEROGENEOUSTABLES:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_HT_DIFFERENT_CATALOGS;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_IDENTIFIERCASE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_IC_UPPER))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_IC_UPPER;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_IC_UPPER))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_IC_LOWER;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_MAXINDEXSIZE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_MAXOPENCHAPTERS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_MAXROWSIZE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_MAXTABLESINSELECT:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_MULTIPLERESULTS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_MR_NOTSUPPORTED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_MR_NOTSUPPORTED;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_MR_NOTSUPPORTED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_MR_CONCURRENT;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_NULLCOLLATION:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NC_END))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NC_END;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NC_END))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_NC_START;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_OLEOBJECTS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_OO_BLOB;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_OPENROWSETSUPPORT:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_ORS_TABLE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_ORS_TABLE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_ORS_TABLE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_ORS_INDEX;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_OUTPUTPARAMETERAVAILABILITY:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_OA_NOTSUPPORTED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_OA_NOTSUPPORTED;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_OA_NOTSUPPORTED))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_OA_ATEXECUTE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_PERSISTENTIDTYPE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_PT_GUID_NAME))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_PT_GUID_NAME;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_PT_GUID_NAME))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_PT_GUID_PROPID;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_PREPAREABORTBEHAVIOR:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_DELETE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_DELETE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_DELETE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_PRESERVE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_PREPARECOMMITBEHAVIOR:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_DELETE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_DELETE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_DELETE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_CB_PRESERVE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_QUOTEDIDENTIFIERCASE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_IC_UPPER))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_IC_UPPER;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_IC_UPPER))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_IC_LOWER;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SCHEMAUSAGE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_SU_DML_STATEMENTS;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SQLSUPPORT:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_SQL_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_SQL_NONE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_SQL_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_SQL_ODBC_CORE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_TABLESTATISTICS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TS_CARDINALITY))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TS_CARDINALITY;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TS_CARDINALITY))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TS_HISTOGRAM;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_STRUCTUREDSTORAGE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_SS_ISEQUENTIALSTREAM;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SUBQUERIES:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_SQ_CORRELATEDSUBQUERIES;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SUPPORTEDTXNDDL:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TC_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TC_NONE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TC_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TC_DML;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SUPPORTEDTXNISOLEVELS:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TI_ISOLATED;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_SUPPORTEDTXNISORETAIN:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_TR_COMMIT_DC;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_ASYNCH:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_ASYNCH_INITIALIZE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_HWND:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = (LONG)PtrToLong(GetDesktopWindow());
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_IMPERSONATION_LEVEL:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DB_IMP_LEVEL_ANONYMOUS))
							pDBPropSet->rgProperties->vValue.lVal = DB_IMP_LEVEL_ANONYMOUS;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DB_IMP_LEVEL_ANONYMOUS))
							pDBPropSet->rgProperties->vValue.lVal = DB_IMP_LEVEL_IDENTIFY;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_LCID:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = GetSystemDefaultLCID();
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_MODE:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DB_MODE_READ))
							pDBPropSet->rgProperties->vValue.lVal = DB_MODE_READ;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DB_MODE_READ))
							pDBPropSet->rgProperties->vValue.lVal = DB_MODE_READWRITE;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_OLEDBSERVICES:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_OS_RESOURCEPOOLING))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_OS_RESOURCEPOOLING;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_OS_RESOURCEPOOLING))
							pDBPropSet->rgProperties->vValue.lVal = DBPROPVAL_OS_TXNENLISTMENT;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_PROTECTION_LEVEL:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != DB_PROT_LEVEL_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DB_PROT_LEVEL_NONE;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == DB_PROT_LEVEL_NONE))
							pDBPropSet->rgProperties->vValue.lVal = DB_PROT_LEVEL_CONNECT;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					case IDX_INIT_GENERALTIMEOUT:
					case IDX_INIT_TIMEOUT:
						// Set the Non Default value and the Default value
						if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal != 0))
							pDBPropSet->rgProperties->vValue.lVal = 0;
						else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.lVal == 0))
							pDBPropSet->rgProperties->vValue.lVal = 1;
						else
							pDBPropSet->rgProperties->vValue.lVal = g_rgDBProperties[cPrpt].vDefault.lVal;
						break;

					default:
						//If not a DATASOURCE, DATASOURCEINFO or DBINIT set to 0
						pDBPropSet->rgProperties->vValue.lVal = 0;
						break;
				}
			}
			
			break;

			case VT_I2:
			{
				pDBPropSet->rgProperties->vValue.vt=VT_I2;
				
				if(cPrpt == IDX_INIT_PROMPT)
				{
					// Set the Non Default value and the Default value
					if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.iVal != DBPROMPT_PROMPT))
						pDBPropSet->rgProperties->vValue.iVal = DBPROMPT_PROMPT;
					else if ((fSet) && (g_rgDBProperties[cPrpt].vDefault.iVal == DBPROMPT_PROMPT))
						pDBPropSet->rgProperties->vValue.iVal = DBPROMPT_NOPROMPT;
					else
						pDBPropSet->rgProperties->vValue.iVal = g_rgDBProperties[cPrpt].vDefault.iVal;
					break;

				}
				else
					return FALSE;
			}

			break;

			case VT_BSTR:
			{
				pDBPropSet->rgProperties->vValue.vt=VT_BSTR;

				// Set the Non Default value and the Default value
				if (fSet)
					pDBPropSet->rgProperties->vValue.bstrVal = SysAllocString(L"Bogus String");
				else
					pDBPropSet->rgProperties->vValue = g_rgDBProperties[cPrpt].vDefault;
			
				break;
			}

			break;
		}
	}

	return TRUE;
}


//-----------------------------------------------------------------------------
//@mfunc: Verify the property is set
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyDBPropSet
(	const ULONG		cPrpt, 
	DBPROPSET		*pDBPropSet, 
	DBPROPSTATUS	dwStatus,
	DBPROPOPTIONS	dwOptions,
	BOOL			fSet
)
{
	if(!(pDBPropSet->rgProperties))
		return FALSE;

	//Check guidPropertySet
	if(pDBPropSet->guidPropertySet != *(g_rgDBProperties[cPrpt].pGuidPropertySet))
		return FALSE;

	//Check cProperties
	if(pDBPropSet->cProperties != 1)
		return FALSE;

	//Check dwPropertyID 
	if(pDBPropSet->rgProperties->dwPropertyID != 
		g_rgDBProperties[cPrpt].dwPropertyID)
		return FALSE;

	//Check dwStatus
	if(pDBPropSet->rgProperties->dwStatus != dwStatus)
		return FALSE;

	//Check dwOptions
	if( pDBPropSet->rgProperties->dwOptions != dwOptions )
		return FALSE;

	//Requesting the value of a property that has not been set and has
	//no default returns VT_EMPTY. 
	if ((!g_rgDBProperties[cPrpt].fSupported) || 
		(dwStatus == DBPROPSTATUS_BADVALUE    || 
		 dwStatus == DBPROPSTATUS_BADOPTION   || 
		 dwStatus == DBPROPSTATUS_NOTSETTABLE || 
		 dwStatus == DBPROPSTATUS_NOTSUPPORTED))
		return TRUE;
	else
	{
		//Check vValue
		switch(g_rgDBProperties[cPrpt].vtType)
		{
			case VT_BOOL:
			{
				if(pDBPropSet->rgProperties->vValue.vt != VT_BOOL)
					return FALSE;

				if (fSet)
				{
					// Check to see if the DATASOURCE property got changed
					if ((*(g_rgDBProperties[cPrpt].pGuidPropertySet) == DBPROPSET_DATASOURCE) && 
						(g_rgDBProperties[cPrpt].fSettable) &&
						(V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != V_BOOL(&pDBPropSet->rgProperties->vValue)))
						return TRUE;

					// Check to see if the ReadOnly property is the same
					if (((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) == VARIANT_TRUE)  &&
						 (V_BOOL(&pDBPropSet->rgProperties->vValue) == VARIANT_TRUE)) ||
						((V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != VARIANT_TRUE)  &&
						 (V_BOOL(&pDBPropSet->rgProperties->vValue) != VARIANT_TRUE)))
						return FALSE;
				}
				else
				{
					if (V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != V_BOOL(&pDBPropSet->rgProperties->vValue))
						return FALSE;
				}
			}
				break;
			
			case VT_I4:
			{
				if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
					return FALSE;

				switch(cPrpt)
				{
					case IDX_DATASOURCETYPE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_DST_TDP)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_DST_MDP)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_DST_TDP)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_DST_TDP))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_RESETDATASOURCE:
						if( pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RD_RESETALL )
							break;
						else
							return FALSE;
					
					case IDX_ACTIVESESSIONS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_ALTERCOLUMN:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBCOLUMNDESCFLAGS_TYPENAME)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_CATALOGLOCATION:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CL_START) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CL_END))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CL_START) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CL_START))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_CATALOGUSAGE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CU_DML_STATEMENTS))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_COLUMNDEFINITION:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CD_NOTNULL))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_CONCATNULLBEHAVIOR:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_NULL) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_NON_NULL))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_NULL) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_NULL))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_CONNECTIONSTATUS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CS_UNINITIALIZED) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CS_INITIALIZED))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CS_UNINITIALIZED) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CS_UNINITIALIZED))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_DSOTHREADMODEL:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_RT_FREETHREAD) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_SINGLETHREAD))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_RT_FREETHREAD) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_RT_FREETHREAD))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_GROUPBY:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_GB_EQUALS_SELECT) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_GB_CONTAINS_SELECT))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_GB_EQUALS_SELECT) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_GB_EQUALS_SELECT))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_HETEROGENEOUSTABLES:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_HT_DIFFERENT_CATALOGS))  ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0) &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_IDENTIFIERCASE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_IC_UPPER)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_IC_LOWER)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_IC_UPPER)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_IC_UPPER))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_MAXINDEXSIZE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_MAXOPENCHAPTERS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_MAXROWSIZE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_MAXTABLESINSELECT:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_MULTIPLERESULTS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_MR_NOTSUPPORTED)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_MR_CONCURRENT)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_MR_NOTSUPPORTED)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_MR_NOTSUPPORTED))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_NULLCOLLATION:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_NC_END)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NC_START)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_NC_END)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_NC_END))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_OLEOBJECTS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_OO_BLOB)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_OPENROWSETSUPPORT:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_ORS_TABLE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ORS_INDEX)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_ORS_TABLE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ORS_TABLE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_OUTPUTPARAMETERAVAILABILITY:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_OA_NOTSUPPORTED)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_OA_ATEXECUTE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_OA_NOTSUPPORTED)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_OA_NOTSUPPORTED))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_PERSISTENTIDTYPE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_PT_GUID_NAME)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_PT_GUID_PROPID)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_PT_GUID_NAME)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_PT_GUID_NAME))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_PREPAREABORTBEHAVIOR:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_DELETE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_PRESERVE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_DELETE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_DELETE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_PREPARECOMMITBEHAVIOR:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_CB_DELETE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_PRESERVE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_CB_DELETE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_CB_DELETE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_QUOTEDIDENTIFIERCASE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_IC_UPPER)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_IC_LOWER)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_IC_UPPER)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_IC_UPPER))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_SCHEMAUSAGE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_SU_DML_STATEMENTS)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_SQLSUPPORT:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_SQL_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_SQL_ODBC_CORE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_SQL_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_SQL_NONE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_TABLESTATISTICS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TS_CARDINALITY)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TS_HISTOGRAM)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TS_CARDINALITY)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TS_CARDINALITY))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_STRUCTUREDSTORAGE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_SS_ISEQUENTIALSTREAM)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_SUBQUERIES:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_SQ_CORRELATEDSUBQUERIES)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_SUPPORTEDTXNDDL:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_TC_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TC_DML)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_TC_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TC_NONE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_SUPPORTEDTXNISOLEVELS:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TI_ISOLATED)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_SUPPORTEDTXNISORETAIN:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_TR_COMMIT_DC)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;
					
					case IDX_INIT_ASYNCH:
					case IDX_INIT_HWND:
					case IDX_INIT_IMPERSONATION_LEVEL:
					case IDX_INIT_LCID:
					case IDX_INIT_MODE:
					case IDX_INIT_OLEDBSERVICES:
					case IDX_INIT_PROTECTION_LEVEL:
					case IDX_INIT_GENERALTIMEOUT:
					case IDX_INIT_TIMEOUT:
						if ((fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal != pDBPropSet->rgProperties->vValue.lVal))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					default:
						// If not in the list we set to 0
						if (pDBPropSet->rgProperties->vValue.lVal != 0)
							return FALSE;

						break;
				}
			}

			break;

			case VT_I2:
			{
				if(pDBPropSet->rgProperties->vValue.vt != VT_I2)
					return FALSE;

				switch(cPrpt)
				{
					case IDX_INIT_PROMPT:
						if ((fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.iVal != pDBPropSet->rgProperties->vValue.iVal))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.iVal == pDBPropSet->rgProperties->vValue.iVal))
							break;
						else
							return FALSE;
				}
			}
			
			break;

			case VT_BSTR:
			{
				if (fSet)
				{
					if(pDBPropSet->rgProperties->vValue.vt != VT_BSTR)
						return FALSE;

					//Compare for the length part of the BSTR
					if(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) != 
							(wcslen(L"Bogus String")) * sizeof(WCHAR))
						return FALSE;
					//Compare the string part of the BSTR, along with the NULL terminator
					if(0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
							(void *)(L"Bogus String"),(wcslen(L"Bogus String")) * sizeof(WCHAR)))))
						return FALSE;
				}
				else
				{
					//Compare the 2 Types to see if they are VT_EMPTY
					if ((g_rgDBProperties[cPrpt].vDefault.vt == VT_EMPTY) &&
						(pDBPropSet->rgProperties->vValue.vt == VT_EMPTY))
						break;

					if(pDBPropSet->rgProperties->vValue.vt != VT_BSTR)
						return FALSE;

					//Compare for the length part of the BSTR
					if(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) != 
							SysStringByteLen(g_rgDBProperties[cPrpt].vDefault.bstrVal))
						return FALSE;
					//Compare the string part of the BSTR, along with the NULL terminator
					if(0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
							(void *)(g_rgDBProperties[cPrpt].vDefault.bstrVal),
							(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal)+sizeof(L'\0')))
							)))
						return FALSE;
				}
			}
			
			break;
		}
	}

	return TRUE;
}


//-----------------------------------------------------------------------------
//@mfunc: Set the DBPROPIDSET
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::InitDBPropIDSet(const ULONG cPrpt, DBPROPIDSET *pDBPropIDSet)
{
	if(!(pDBPropIDSet->rgPropertyIDs))
		return FALSE;

	pDBPropIDSet->guidPropertySet=*(g_rgDBProperties[cPrpt].pGuidPropertySet);
	pDBPropIDSet->cPropertyIDs=1;
	*(pDBPropIDSet->rgPropertyIDs)=g_rgDBProperties[cPrpt].dwPropertyID;

	return TRUE;
}


//-----------------------------------------------------------------------------
//@mfunc: VerifyDBPropGet
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyDBPropGet
(	const ULONG		cPrpt, 
	DBPROPSET		*pDBPropSet, 
	DBPROPSTATUS	dwStatus,
	BOOL			fSet
)
{
	if(!(pDBPropSet) || !(pDBPropSet->rgProperties))
		return FALSE;

	//Check guidPropertySet
	if(pDBPropSet->guidPropertySet!= *(g_rgDBProperties[cPrpt].pGuidPropertySet))
		return FALSE;

	//Check cProperties
	if(pDBPropSet->cProperties !=1)
		return FALSE;

	//Check dwPropertyID 
	if(pDBPropSet->rgProperties->dwPropertyID != 
		g_rgDBProperties[cPrpt].dwPropertyID)
		return FALSE;

	//Check dwStatus
	if(pDBPropSet->rgProperties->dwStatus!=dwStatus)
		return FALSE;

	//If dwStatus is NOTSUPPORTED dwOptions, colid, and vValue are zeroed
	if(dwStatus == DBPROPSTATUS_NOTSUPPORTED)
	{
		if( (!pDBPropSet->rgProperties->colid.eKind) &&
			(!pDBPropSet->rgProperties->dwOptions) &&
			(!pDBPropSet->rgProperties->vValue.vt) )
			return TRUE;
		else
			return FALSE;
	}

	//Check vValue
	switch(g_rgDBProperties[cPrpt].vtType)
	{
		case VT_BOOL:
		{
			if(pDBPropSet->rgProperties->vValue.vt != VT_BOOL)
				return FALSE;

			if (fSet)
			{
				// Check to see if the DATASOURCE property got changed
				if (((*(g_rgDBProperties[cPrpt].pGuidPropertySet) == DBPROPSET_DATASOURCE) ||
					 (*(g_rgDBProperties[cPrpt].pGuidPropertySet) == DBPROPSET_DBINIT)) &&
					(g_rgDBProperties[cPrpt].fSettable) &&
					(V_BOOL(&g_rgDBProperties[cPrpt].vDefault) != V_BOOL(&pDBPropSet->rgProperties->vValue)))
					return TRUE;

				// Check to see if the default is VT_EMPTY
				if ((*(g_rgDBProperties[cPrpt].pGuidPropertySet) == DBPROPSET_DBINIT) && 
					(g_rgDBProperties[cPrpt].vDefault.vt == VT_EMPTY))
					return TRUE;

				// Check to see if the ReadOnly property is the same
				if (((g_rgDBProperties[cPrpt].vDefault.bVal == VARIANT_TRUE)  &&
					 (V_BOOL(&pDBPropSet->rgProperties->vValue) == VARIANT_TRUE)) ||
					((g_rgDBProperties[cPrpt].vDefault.bVal != VARIANT_TRUE)  &&
					 (V_BOOL(&pDBPropSet->rgProperties->vValue) != VARIANT_TRUE)))
					return FALSE;
			}
			else
			{
				if (g_rgDBProperties[cPrpt].vDefault.bVal != V_BOOL(&pDBPropSet->rgProperties->vValue))
					return FALSE;
			}
		}
		break;
		
		case VT_I4:
			{
				if( cPrpt == IDX_RESETDATASOURCE ) 
				{
					if( pDBPropSet->rgProperties->vValue.vt != VT_EMPTY && 
						pDBPropSet->rgProperties->vValue.vt != VT_I4 )
						return FALSE;
				}
				else
				{
					if(pDBPropSet->rgProperties->vValue.vt != VT_I4)
						return FALSE;
				}

				switch(cPrpt)
				{
					case IDX_RESETDATASOURCE:
					case IDX_ACTIVESESSIONS:
					case IDX_ALTERCOLUMN:
					case IDX_CATALOGLOCATION:
					case IDX_CATALOGUSAGE:
					case IDX_COLUMNDEFINITION:
					case IDX_CONCATNULLBEHAVIOR:
					case IDX_CONNECTIONSTATUS:
					case IDX_DSOTHREADMODEL:
					case IDX_GROUPBY:
					case IDX_HETEROGENEOUSTABLES:
					case IDX_IDENTIFIERCASE:
					case IDX_MAXINDEXSIZE:
					case IDX_MAXOPENCHAPTERS:
					case IDX_MAXROWSIZE:
					case IDX_MAXTABLESINSELECT:
					case IDX_MULTIPLERESULTS:
					case IDX_NULLCOLLATION:
					case IDX_OLEOBJECTS:
					case IDX_OPENROWSETSUPPORT:
					case IDX_OUTPUTPARAMETERAVAILABILITY:
					case IDX_PERSISTENTIDTYPE:
					case IDX_PREPAREABORTBEHAVIOR:
					case IDX_PREPARECOMMITBEHAVIOR:
					case IDX_QUOTEDIDENTIFIERCASE:
					case IDX_SCHEMAUSAGE:
					case IDX_SQLSUPPORT:
					case IDX_STRUCTUREDSTORAGE:
					case IDX_SUBQUERIES:
					case IDX_SUPPORTEDTXNDDL:
					case IDX_SUPPORTEDTXNISOLEVELS:
					case IDX_SUPPORTEDTXNISORETAIN:
						if ((fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal != pDBPropSet->rgProperties->vValue.lVal))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

						break;

					case IDX_INIT_ASYNCH:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_ASYNCH_INITIALIZE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_HWND:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == (LONG)PtrToLong(GetDesktopWindow()))) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_IMPERSONATION_LEVEL:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DB_IMP_LEVEL_ANONYMOUS)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_IMP_LEVEL_IDENTIFY)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DB_IMP_LEVEL_ANONYMOUS)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_IMP_LEVEL_ANONYMOUS))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_LCID:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == (LONG)GetSystemDefaultLCID())) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  ((pDBPropSet->rgProperties->vValue.lVal == 0)|| //for providers validates the LCID set, the SetProp will fail, and get a default here
							  (pDBPropSet->rgProperties->vValue.lVal == g_rgDBProperties[cPrpt].vDefault.lVal)))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_MODE:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DB_MODE_READ)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_MODE_READWRITE)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DB_MODE_READ)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_MODE_READ))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_OLEDBSERVICES:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DBPROPVAL_OS_RESOURCEPOOLING)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_OS_TXNENLISTMENT)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DBPROPVAL_OS_RESOURCEPOOLING)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DBPROPVAL_OS_RESOURCEPOOLING))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_PROTECTION_LEVEL:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == DB_PROT_LEVEL_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_PROT_LEVEL_CONNECT)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != DB_PROT_LEVEL_NONE)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == DB_PROT_LEVEL_NONE))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					case IDX_INIT_GENERALTIMEOUT:
					case IDX_INIT_TIMEOUT:
						if ((fSet) &&
							(((g_rgDBProperties[cPrpt].vDefault.lVal == 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 1)) ||
							 ((g_rgDBProperties[cPrpt].vDefault.lVal != 0)  &&
							  (pDBPropSet->rgProperties->vValue.lVal == 0))))
							break;
						else if ((!fSet) &&
							(g_rgDBProperties[cPrpt].vDefault.lVal == pDBPropSet->rgProperties->vValue.lVal))
							break;
						else
							return FALSE;

					default:
							return FALSE;
						break;
				}
			}
		break;
		
		case VT_I2:
		{
			if(pDBPropSet->rgProperties->vValue.vt != VT_I2)
				return FALSE;

			switch(cPrpt)
			{
				case IDX_INIT_PROMPT:
					if ((fSet) &&
						(g_rgDBProperties[cPrpt].vDefault.iVal != pDBPropSet->rgProperties->vValue.iVal))
						break;
					else if ((!fSet) &&
						(g_rgDBProperties[cPrpt].vDefault.iVal == pDBPropSet->rgProperties->vValue.iVal))
						break;
					else
						return FALSE;
				break;
			}
		}
		break;

		case VT_BSTR:
		{
			if (fSet)
			{
				//Compare the 2 Types to see if they are VT_EMPTY
				if ((g_rgDBProperties[cPrpt].vDefault.vt == VT_EMPTY) &&
					(pDBPropSet->rgProperties->vValue.vt == VT_EMPTY))
					break;

				if(pDBPropSet->rgProperties->vValue.vt != VT_BSTR)
					return FALSE;
				
				//For providers like index server, set "bogus string" would fail
				//so, here you may get the default value
				//Compare for the length part of the BSTR
				if(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) == 
						(wcslen(L"Bogus String")) * sizeof(WCHAR))
				{
					//Compare the string part of the BSTR, along with the NULL terminator
					if(0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
						(void *)(L"Bogus String"),(wcslen(L"Bogus String")) * sizeof(WCHAR)))))
							return FALSE;
				}
				else 
				{
					if(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) != 
						SysStringByteLen(g_rgDBProperties[cPrpt].vDefault.bstrVal))
						return FALSE;
					//Compare the string part of the BSTR, along with the NULL terminator
					if(0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
						(void *)(g_rgDBProperties[cPrpt].vDefault.bstrVal),
						(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal)+sizeof(L'\0')))
						)))
						return FALSE;
				}

			}
			else
			{
				//Compare the 2 Types to see if they are VT_EMPTY
				if ((g_rgDBProperties[cPrpt].vDefault.vt == VT_EMPTY) &&
					(pDBPropSet->rgProperties->vValue.vt == VT_EMPTY))
					break;

				if(pDBPropSet->rgProperties->vValue.vt != VT_BSTR)
					return FALSE;

				//Compare for the length part of the BSTR
				if(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) != 
						SysStringByteLen(g_rgDBProperties[cPrpt].vDefault.bstrVal))
					return FALSE;
				//Compare the string part of the BSTR, along with the NULL terminator
				if(0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
						(void *)(g_rgDBProperties[cPrpt].vDefault.bstrVal),
						(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal)+sizeof(L'\0')))
						)))
					return FALSE;
			}
		}
		
		break;
	}
	
	return TRUE;
}


//-----------------------------------------------------------------------------
//@mfunc: VerifyDBPropDefault: Verify the return value is the same as 
//			the default value.
//
//-----------------------------------------------------------------------------
BOOL TCIDProperties::VerifyDBPropDefault(ULONG cPrpt, DBPROPSET *pDBPropSet, BOOL fAfterRowset)
{
	if(!(pDBPropSet->rgProperties))
		return FALSE;

	//Check guidPropertySet
	if(pDBPropSet->guidPropertySet != *(g_rgDBProperties[cPrpt].pGuidPropertySet))
		return FALSE;

	//Check cProperties
	if(pDBPropSet->cProperties != 1)
		return FALSE;

	//Check dwPropertyID 
	if(pDBPropSet->rgProperties->dwPropertyID != 
			g_rgDBProperties[cPrpt].dwPropertyID)
		return FALSE;

	//Check dwStatus has to be DBPROPSTATUS_OK
	if(pDBPropSet->rgProperties->dwStatus != DBPROPSTATUS_OK)
		return FALSE;

	//Check vValue
	if(!((fAfterRowset == TRUE) && (g_rgDBProperties[cPrpt].fSettable == FALSE)))
	{
		switch(pDBPropSet->rgProperties->vValue.vt)
		{
			case VT_EMPTY:
				{
					if(VT_EMPTY!=g_rgDBProperties[cPrpt].vDefault.vt)
						return FALSE;
				}
				break;
			case VT_BOOL:
				{
					if(V_BOOL(&pDBPropSet->rgProperties->vValue) !=
							V_BOOL(&g_rgDBProperties[cPrpt].vDefault))
						return FALSE;
				}
				break;
			case VT_I8:
				{
					if(pDBPropSet->rgProperties->vValue.llVal!=g_rgDBProperties[cPrpt].vDefault.llVal)
						return FALSE;
				}
				break;
			case VT_I4:
				{
					if(pDBPropSet->rgProperties->vValue.lVal!=g_rgDBProperties[cPrpt].vDefault.lVal)
						return FALSE;

					// Some values are known
					if( pDBPropSet->rgProperties->dwPropertyID == DBPROP_CONNECTIONSTATUS &&
						pDBPropSet->rgProperties->vValue.lVal != DBPROPVAL_CS_INITIALIZED )
						return FALSE;
				}
				break;
			case VT_I2:
				{
					if(pDBPropSet->rgProperties->vValue.iVal!=g_rgDBProperties[cPrpt].vDefault.iVal)
						return FALSE;
				}
				break;
			case VT_BSTR:
				{
					//Check to see if they are both valid
					if(pDBPropSet->rgProperties->vValue.vt != g_rgDBProperties[cPrpt].vtType)
						return FALSE;

					//Check to see if they are both valid
					if(pDBPropSet->rgProperties->vValue.vt != g_rgDBProperties[cPrpt].vDefault.vt)
						return FALSE;

					//Compare for the length part of the BSTR
					if(!pDBPropSet->rgProperties->vValue.bstrVal ||
						SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal) != 
							SysStringByteLen(g_rgDBProperties[cPrpt].vDefault.bstrVal))
						return FALSE;
					//Compare the string part of the BSTR, along with the NULL terminator
					if( !pDBPropSet->rgProperties->vValue.bstrVal ||
						0!=((memcmp((void *)(pDBPropSet->rgProperties->vValue.bstrVal), 
							(void *)(g_rgDBProperties[cPrpt].vDefault.bstrVal),
							(SysStringByteLen(pDBPropSet->rgProperties->vValue.bstrVal)+sizeof(L'\0')))
							)))
						return FALSE;

					// Some values are known
					if( pDBPropSet->rgProperties->dwPropertyID == DBPROP_DATASOURCENAME &&
						V_VT(&g_rgDBProperties[IDX_INIT_DATASOURCE].vDefault) == VT_BSTR && 
						wcscmp(g_rgDBProperties[IDX_INIT_DATASOURCE].vDefault.bstrVal, 
						       pDBPropSet->rgProperties->vValue.bstrVal) )
						return FALSE;
				}
				break;
			default:
					return FALSE;
				break;
		}
	}	
	
	return TRUE;
}


void TCIDProperties::WritableProperty(ULONG cPrpt,BOOL fInitialized)
{
	HRESULT				hr=E_FAIL;
	DBPROPIDSET			DBPropIDSet;
	ULONG				cPropertyInfoSets=0;
	DBPROPINFOSET *		pPropertyInfoSets=NULL;

	//Initialization
	DBPropIDSet.rgPropertyIDs=&g_rgDBProperties[cPrpt].dwPropertyID;
	DBPropIDSet.cPropertyIDs=1;
	memcpy(&DBPropIDSet.guidPropertySet,g_rgDBProperties[cPrpt].pGuidPropertySet,sizeof(GUID));

	//Call IDBProperties::GetPropertyInfo to get all the properties
	hr=m_pIDBProperties->GetPropertyInfo(1,&DBPropIDSet,
						&cPropertyInfoSets,&pPropertyInfoSets, NULL);

	//At least one property set should be returned
	if(!COMPARE(cPropertyInfoSets, 1))
		goto END;

	//Make sure the internal description pointer is NULL
	COMPARE(pPropertyInfoSets->rgPropertyInfos->pwszDescription, NULL);

	//Check the return code
	if( (g_rgDBProperties[cPrpt].fSupported) && ((fInitialized) ||
		(DBPROPSET_DBINIT == *(g_rgDBProperties[cPrpt].pGuidPropertySet))) )
		CHECK(hr, S_OK);
	else
		CHECK(hr, DB_E_ERRORSOCCURRED);

	//dwFlags should set DBPROPFLAGS_WRITE if the property is writable
	if(g_rgDBProperties[cPrpt].fSettable)
	{
		if(!(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE))
		{
			odtLog<<wszWriteFlagNotSetAt<<cPrpt<<L" \n";
			//Provider does not have to return what is in spec
			g_rgDBProperties[cPrpt].fSettable = FALSE;
		}
	}
	else
	{
		if(pPropertyInfoSets->rgPropertyInfos->dwFlags & DBPROPFLAGS_WRITE)
		{
			odtLog<<wszWriteFlagSetAt<<cPrpt<<L" \n";
			//Provider does not have to return what is in spec
			g_rgDBProperties[cPrpt].fSettable = TRUE;
		}
	}

END:
	//Free memory from GetPropertyInfo
	FreeProperties(&cPropertyInfoSets, &pPropertyInfoSets);
	return;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Test Case Section
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


// {{ TCW_TEST_CASE_MAP(TCIDProperties_GetPropInfo)
//--------------------------------------------------------------------
// @class IDBProperties::GetPropInfo
//
class TCIDProperties_GetPropInfo : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_GetPropInfo,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember DBPROP is DBPROP_ACTIVESESSIONS - S_OK
	int Variation_1();
	// @cmember DBPROP is DBPROP_ASYNCTXNABORT - S_OK
	int Variation_2();
	// @cmember DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
	int Variation_3();
	// @cmember DBPROP is DBPROP_BYREFACCESSORS - S_OK
	int Variation_4();
	// @cmember DBPROP is DBPROP_CATALOGLOCATION - S_OK
	int Variation_5();
	// @cmember DBPROP is DBPROP_CATALOGTERM - S_OK
	int Variation_6();
	// @cmember DBPROP is DBPROP_CATALOGUSAGE - S_OK
	int Variation_7();
	// @cmember DBPROP is DBPROP_COLUMNDEFINITION - S_OK
	int Variation_8();
	// @cmember DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
	int Variation_9();
	// @cmember DBPROP is DBPROP_DATASOURCENAME - S_OK
	int Variation_10();
	// @cmember DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
	int Variation_11();
	// @cmember DBPROP is DBPROP_DBMSNAME - S_OK
	int Variation_12();
	// @cmember DBPROP is DBPROP_DBMSVER - S_OK
	int Variation_13();
	// @cmember DBPROP is DBPROP_DSOTHREADMODEL - S_OK
	int Variation_14();
	// @cmember DBPROP is DBPROP_GROUPBY - S_OK
	int Variation_15();
	// @cmember DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
	int Variation_16();
	// @cmember DBPROP is DBPROP_IDENTIFIERCASE - S_OK
	int Variation_17();
	// @cmember DBPROP is DBPROP_MAXINDEXSIZE - S_OK
	int Variation_18();
	// @cmember DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
	int Variation_19();
	// @cmember DBPROP is DBPROP_MAXORSINFILTER - S_OK
	int Variation_20();
	// @cmember DBPROP is DBPROP_MAXROWSIZE - S_OK
	int Variation_21();
	// @cmember DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
	int Variation_22();
	// @cmember DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
	int Variation_23();
	// @cmember DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
	int Variation_24();
	// @cmember DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
	int Variation_25();
	// @cmember DBPROP is DBPROP_MULTIPLERESULTS - S_OK
	int Variation_26();
	// @cmember DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
	int Variation_27();
	// @cmember DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
	int Variation_28();
	// @cmember DBPROP is DBPROP_NULLCOLLATION - S_OK
	int Variation_29();
	// @cmember DBPROP is DBPROP_OLEOBJECTS - S_OK
	int Variation_30();
	// @cmember DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
	int Variation_31();
	// @cmember DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
	int Variation_32();
	// @cmember DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
	int Variation_33();
	// @cmember DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
	int Variation_34();
	// @cmember DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
	int Variation_35();
	// @cmember DBPROP is DBPROP_PROCEDURETERM - S_OK
	int Variation_36();
	// @cmember DBPROP is DBPROP_PROVIDERNAME - S_OK
	int Variation_37();
	// @cmember DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
	int Variation_38();
	// @cmember DBPROP is DBPROP_PROVIDERVER - S_OK
	int Variation_39();
	// @cmember DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
	int Variation_40();
	// @cmember DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
	int Variation_41();
	// @cmember DBPROP is DBPROP_SCHEMATERM - S_OK
	int Variation_42();
	// @cmember DBPROP is DBPROP_SCHEMAUSAGE - S_OK
	int Variation_43();
	// @cmember DBPROP is DBPROP_SORTONINDEX - S_OK
	int Variation_44();
	// @cmember DBPROP is DBPROP_SQLSUPPORT - S_OK
	int Variation_45();
	// @cmember DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
	int Variation_46();
	// @cmember DBPROP is DBPROP_SUBQUERIES - S_OK
	int Variation_47();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
	int Variation_48();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
	int Variation_49();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
	int Variation_50();
	// @cmember DBPROP is DBPROP_TABLETERM - S_OK
	int Variation_51();
	// @cmember DBPROP is DBPROP_USERNAME - S_OK
	int Variation_52();
	// @cmember DBPROP is DBPROP_CURRENTCATALOG - S_OK
	int Variation_53();
	// @cmember DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
	int Variation_54();
	// @cmember DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
	int Variation_55();
	// @cmember DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
	int Variation_56();
	// @cmember DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
	int Variation_57();
	// @cmember DBPROP is DBPROP_AUTH_PASSWORD - S_OK
	int Variation_58();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
	int Variation_59();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
	int Variation_60();
	// @cmember DBPROP is DBPROP_AUTH_USERID - S_OK
	int Variation_61();
	// @cmember DBPROP is DBPROP_INIT_ASYNCH - S_OK
	int Variation_62();
	// @cmember DBPROP is DBPROP_INIT_DATASOURCE - S_OK
	int Variation_63();
	// @cmember DBPROP is DBPROP_INIT_HWND - S_OK
	int Variation_64();
	// @cmember DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
	int Variation_65();
	// @cmember DBPROP is DBPROP_INIT_LCID - S_OK
	int Variation_66();
	// @cmember DBPROP is DBPROP_INIT_LOCATION - S_OK
	int Variation_67();
	// @cmember DBPROP is DBPROP_INIT_MODE - S_OK
	int Variation_68();
	// @cmember DBPROP is DBPROP_INIT_PROMPT - S_OK
	int Variation_69();
	// @cmember DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
	int Variation_70();
	// @cmember DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
	int Variation_71();
	// @cmember DBPROP is DBPROP_INIT_TIMEOUT - S_OK
	int Variation_72();
	// @cmember DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
	int Variation_73();
	// @cmember DBPROP is DBPROP_COL_DEFAULT - S_OK
	int Variation_74();
	// @cmember DBPROP is DBPROP_COL_DESCRIPTION - S_OK
	int Variation_75();
	// @cmember DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
	int Variation_76();
	// @cmember DBPROP is DBPROP_COL_NULLABLE - S_OK
	int Variation_77();
	// @cmember DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
	int Variation_78();
	// @cmember DBPROP is DBPROP_COL_UNIQUE - S_OK
	int Variation_79();
	// @cmember DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
	int Variation_80();
	// @cmember DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
	int Variation_81();
	// @cmember DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
	int Variation_82();
	// @cmember DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
	int Variation_83();
	// @cmember DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
	int Variation_84();
	// @cmember DBPROP is DBPROP_INDEX_NULLS - S_OK
	int Variation_85();
	// @cmember DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
	int Variation_86();
	// @cmember DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
	int Variation_87();
	// @cmember DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
	int Variation_88();
	// @cmember DBPROP is DBPROP_INDEX_TYPE - S_OK
	int Variation_89();
	// @cmember DBPROP is DBPROP_INDEX_UNIQUE - S_OK
	int Variation_90();
	// @cmember DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
	int Variation_91();
	// @cmember DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
	int Variation_92();
	// @cmember DBPROP is DBPROP_ABORTPRESERVE - S_OK
	int Variation_93();
	// @cmember DBPROP is DBPROP_APPENDONLY - S_OK
	int Variation_94();
	// @cmember DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
	int Variation_95();
	// @cmember DBPROP is DBPROP_BOOKMARKS - S_OK
	int Variation_96();
	// @cmember DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
	int Variation_97();
	// @cmember DBPROP is DBPROP_BOOKMARKTYPE - S_OK
	int Variation_98();
	// @cmember DBPROP is DBPROP_CACHEDEFERRED - S_OK
	int Variation_99();
	// @cmember DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
	int Variation_100();
	// @cmember DBPROP is DBPROP_CANHOLDROWS - S_OK
	int Variation_101();
	// @cmember DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
	int Variation_102();
	// @cmember DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
	int Variation_103();
	// @cmember DBPROP is DBPROP_COLUMNRESTRICT - S_OK
	int Variation_104();
	// @cmember DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
	int Variation_105();
	// @cmember DBPROP is DBPROP_COMMITPRESERVE - S_OK
	int Variation_106();
	// @cmember DBPROP is DBPROP_DEFERRED - S_OK
	int Variation_107();
	// @cmember DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
	int Variation_108();
	// @cmember DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
	int Variation_109();
	// @cmember DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
	int Variation_110();
	// @cmember DBPROP is DBPROP_IMMOBILEROWS - S_OK
	int Variation_111();
	// @cmember DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
	int Variation_112();
	// @cmember DBPROP is DBPROP_LITERALIDENTITY - S_OK
	int Variation_113();
	// @cmember DBPROP is DBPROP_MAXOPENROWS - S_OK
	int Variation_114();
	// @cmember DBPROP is DBPROP_MAXPENDINGROWS - S_OK
	int Variation_115();
	// @cmember DBPROP is DBPROP_MAXROWS - S_OK
	int Variation_116();
	// @cmember DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
	int Variation_117();
	// @cmember DBPROP is DBPROP_MEMORYUSAGE - S_OK
	int Variation_118();
	// @cmember DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
	int Variation_119();
	// @cmember DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
	int Variation_120();
	// @cmember DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
	int Variation_121();
	// @cmember DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
	int Variation_122();
	// @cmember DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
	int Variation_123();
	// @cmember DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
	int Variation_124();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
	int Variation_125();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
	int Variation_126();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
	int Variation_127();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
	int Variation_128();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
	int Variation_129();
	// @cmember DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
	int Variation_130();
	// @cmember DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
	int Variation_131();
	// @cmember DBPROP is DBPROP_OTHERINSERT - S_OK
	int Variation_132();
	// @cmember DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
	int Variation_133();
	// @cmember DBPROP is DBPROP_OWNINSERT - S_OK
	int Variation_134();
	// @cmember DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
	int Variation_135();
	// @cmember DBPROP is DBPROP_QUICKRESTART - S_OK
	int Variation_136();
	// @cmember DBPROP is DBPROP_REENTRANTEVENTS - S_OK
	int Variation_137();
	// @cmember DBPROP is DBPROP_REMOVEDELETED - S_OK
	int Variation_138();
	// @cmember DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
	int Variation_139();
	// @cmember DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
	int Variation_140();
	// @cmember DBPROP is DBPROP_ROWRESTRICT - S_OK
	int Variation_141();
	// @cmember DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
	int Variation_142();
	// @cmember DBPROP is DBPROP_ROWTHREADMODEL - S_OK
	int Variation_143();
	// @cmember DBPROP is DBPROP_SERVERCURSOR - S_OK
	int Variation_144();
	// @cmember DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
	int Variation_145();
	// @cmember DBPROP is DBPROP_UPDATABILITY - S_OK
	int Variation_146();
	// @cmember DBPROP is DBPROP_STRONGIDENTITY - S_OK
	int Variation_147();
	// @cmember DBPROP is DBPROP_IAccessor - S_OK
	int Variation_148();
	// @cmember DBPROP is DBPROP_IChapteredRowset - S_OK
	int Variation_149();
	// @cmember DBPROP is DBPROP_IColumnsInfo - S_OK
	int Variation_150();
	// @cmember DBPROP is DBPROP_IColumnsRowset - S_OK
	int Variation_151();
	// @cmember DBPROP is DBPROP_IConnectionPointContainer - S_OK
	int Variation_152();
	// @cmember DBPROP is DBPROP_IConvertType - S_OK
	int Variation_153();
	// @cmember DBPROP is DBPROP_IDBAsynchStatus - S_OK
	int Variation_154();
	// @cmember DBPROP is DBPROP_IRowset - S_OK
	int Variation_155();
	// @cmember DBPROP is DBPROP_IRowsetChange - S_OK
	int Variation_156();
	// @cmember DBPROP is DBPROP_IRowsetFind - S_OK
	int Variation_157();
	// @cmember DBPROP is DBPROP_IRowsetIdentity - S_OK
	int Variation_158();
	// @cmember DBPROP is DBPROP_IRowsetIndex - S_OK
	int Variation_159();
	// @cmember DBPROP is DBPROP_IRowsetInfo - S_OK
	int Variation_160();
	// @cmember DBPROP is DBPROP_IRowsetLocate - S_OK
	int Variation_161();
	// @cmember DBPROP is DBPROP_IRowsetResynch - S_OK
	int Variation_162();
	// @cmember DBPROP is DBPROP_IRowsetScroll - S_OK
	int Variation_163();
	// @cmember DBPROP is DBPROP_IRowsetUpdate - S_OK
	int Variation_164();
	// @cmember DBPROP is DBPROP_IRowsetView - S_OK
	int Variation_165();
	// @cmember DBPROP is DBPROP_IViewChapter - S_OK
	int Variation_166();
	// @cmember DBPROP is DBPROP_IViewFilter - S_OK
	int Variation_167();
	// @cmember DBPROP is DBPROP_IViewRowset - S_OK
	int Variation_168();
	// @cmember DBPROP is DBPROP_IViewSort - S_OK
	int Variation_169();
	// @cmember DBPROP is DBPROP_ILockBytes - S_OK
	int Variation_170();
	// @cmember DBPROP is DBPROP_ISequentialStream - S_OK
	int Variation_171();
	// @cmember DBPROP is DBPROP_IStorage - S_OK
	int Variation_172();
	// @cmember DBPROP is DBPROP_IStream - S_OK
	int Variation_173();
	// @cmember DBPROP is DBPROP_ISupportErrorInfo - S_OK
	int Variation_174();
	// @cmember DBPROP is DBPROP_ALTERCOLUMN - S_OK
	int Variation_175();
	// @cmember DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
	int Variation_176();
	// @cmember DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
	int Variation_177();
	// @cmember DBPROP is DBPROP_PROVIDERMEMORY - S_OK
	int Variation_178();
	// @cmember DBPROP is DBPROP_SERVERNAME - S_OK
	int Variation_179();
	// @cmember DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
	int Variation_180();
	// @cmember DBPROP is DBPROP_RESETDATASOURCE - S_OK
	int Variation_181();
	// @cmember DBPROP is DBPROP_INIT_CATALOG - S_OK
	int Variation_182();
	// @cmember DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
	int Variation_183();
	// @cmember DBPROP is DBPROP_COLUMNLCID - S_OK
	int Variation_184();
	// @cmember DBPROP is DBPROP_ACCESSORDER - S_OK
	int Variation_185();
	// @cmember DBPROP is DBPROP_BOOKMARKINFO - S_OK
	int Variation_186();
	// @cmember DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
	int Variation_187();
	// @cmember DBPROP is DBPROP_LOCKMODE - S_OK
	int Variation_188();
	// @cmember DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
	int Variation_189();
	// @cmember DBPROP is DBPROP_ROW_BULKOPS - S_OK
	int Variation_190();
	// @cmember DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
	int Variation_191();
	// @cmember DBPROP is DBPROP_STORAGEFLAGS - S_OK
	int Variation_192();
	// @cmember DBPROP is DBPROP_UNIQUEROWS - S_OK
	int Variation_193();
	// @cmember DBPROP is DBPROP_IMultipleResults - S_OK
	int Variation_194();
	// @cmember DBPROP is DBPROP_IRowsetRefresh - S_OK
	int Variation_195();
	// @cmember DBPROP is DBPROP_IParentRowset - S_OK
	int Variation_196();
	// @cmember DBPROP is DBPROP_COL_INCREMENT - S_OK
	int Variation_197();
	// @cmember DBPROP is DBPROP_COL_ISLONG - S_OK
	int Variation_198();
	// @cmember DBPROP is DBPROP_COL_SEED - S_OK
	int Variation_199();
	// @cmember DBPROP is DBPROP_COMSERVICES - S_OK
	int Variation_200();
	// @cmember DBPROP is DBPROP_DATASOURCETYPE - S_OK
	int Variation_201();
	// @cmember DBPROP is DBPROP_GENERATEURL - S_OK
	int Variation_202();
	// @cmember DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
	int Variation_203();
	// @cmember DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
	int Variation_204();
	// @cmember DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
	int Variation_205();
	// @cmember DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
	int Variation_206();
	// @cmember DBPROP is DBPROP_CLIENTCURSOR - S_OK
	int Variation_207();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
	int Variation_208();
	// @cmember DBPROP is DBPROP_IBindResource - S_OK
	int Variation_209();
	// @cmember DBPROP is DBPROP_IColumnsInfo2 - S_OK
	int Variation_210();
	// @cmember DBPROP is DBPROP_ICreateRow - S_OK
	int Variation_211();
	// @cmember DBPROP is DBPROP_IGetRow - S_OK
	int Variation_212();
	// @cmember DBPROP is DBPROP_IGetSession - S_OK
	int Variation_213();
	// @cmember DBPROP is DBPROP_IGetSourceRow - S_OK
	int Variation_214();
	// @cmember DBPROP is DBPROP_IRow - S_OK
	int Variation_215();
	// @cmember DBPROP is DBPROP_IRowChange - S_OK
	int Variation_216();
	// @cmember DBPROP is DBPROP_IRowSchemaChange - S_OK
	int Variation_217();
	// @cmember DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
	int Variation_218();
	// @cmember DBPROP is DBPROP_IScopedOperations - S_OK
	int Variation_219();
	// @cmember DBPROP is DBPROP_TABLESTATISTICS - S_OK
	int Variation_220();
	// @cmember DBPROP is DBPROP_IRowsetBookmark - S_OK
	int Variation_221();
	// @cmember DBPROP is DBPROP_SKIPROWCOUNTRESULTS - S_OK
	int Variation_222();
	// @cmember DBPROP is DBPROP_OUTPUTSTREAM - S_OK
	int Variation_223();
	// @cmember DBPROP is DBPROP_OUTPUTENCODING - S_OK
	int Variation_224();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_GetPropInfo)
#define THE_CLASS TCIDProperties_GetPropInfo
BEG_TEST_CASE(TCIDProperties_GetPropInfo, TCIDProperties, L"IDBProperties::GetPropInfo")
	TEST_VARIATION(1, 		L"DBPROP is DBPROP_ACTIVESESSIONS - S_OK")
	TEST_VARIATION(2, 		L"DBPROP is DBPROP_ASYNCTXNABORT - S_OK")
	TEST_VARIATION(3, 		L"DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK")
	TEST_VARIATION(4, 		L"DBPROP is DBPROP_BYREFACCESSORS - S_OK")
	TEST_VARIATION(5, 		L"DBPROP is DBPROP_CATALOGLOCATION - S_OK")
	TEST_VARIATION(6, 		L"DBPROP is DBPROP_CATALOGTERM - S_OK")
	TEST_VARIATION(7, 		L"DBPROP is DBPROP_CATALOGUSAGE - S_OK")
	TEST_VARIATION(8, 		L"DBPROP is DBPROP_COLUMNDEFINITION - S_OK")
	TEST_VARIATION(9, 		L"DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK")
	TEST_VARIATION(10, 		L"DBPROP is DBPROP_DATASOURCENAME - S_OK")
	TEST_VARIATION(11, 		L"DBPROP is DBPROP_DATASOURCEREADONLY - S_OK")
	TEST_VARIATION(12, 		L"DBPROP is DBPROP_DBMSNAME - S_OK")
	TEST_VARIATION(13, 		L"DBPROP is DBPROP_DBMSVER - S_OK")
	TEST_VARIATION(14, 		L"DBPROP is DBPROP_DSOTHREADMODEL - S_OK")
	TEST_VARIATION(15, 		L"DBPROP is DBPROP_GROUPBY - S_OK")
	TEST_VARIATION(16, 		L"DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK")
	TEST_VARIATION(17, 		L"DBPROP is DBPROP_IDENTIFIERCASE - S_OK")
	TEST_VARIATION(18, 		L"DBPROP is DBPROP_MAXINDEXSIZE - S_OK")
	TEST_VARIATION(19, 		L"DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK")
	TEST_VARIATION(20, 		L"DBPROP is DBPROP_MAXORSINFILTER - S_OK")
	TEST_VARIATION(21, 		L"DBPROP is DBPROP_MAXROWSIZE - S_OK")
	TEST_VARIATION(22, 		L"DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK")
	TEST_VARIATION(23, 		L"DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK")
	TEST_VARIATION(24, 		L"DBPROP is DBPROP_MAXTABLESINSELECT - S_OK")
	TEST_VARIATION(25, 		L"DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK")
	TEST_VARIATION(26, 		L"DBPROP is DBPROP_MULTIPLERESULTS - S_OK")
	TEST_VARIATION(27, 		L"DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK")
	TEST_VARIATION(28, 		L"DBPROP is DBPROP_MULTITABLEUPDATE - S_OK")
	TEST_VARIATION(29, 		L"DBPROP is DBPROP_NULLCOLLATION - S_OK")
	TEST_VARIATION(30, 		L"DBPROP is DBPROP_OLEOBJECTS - S_OK")
	TEST_VARIATION(31, 		L"DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK")
	TEST_VARIATION(32, 		L"DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK")
	TEST_VARIATION(33, 		L"DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK")
	TEST_VARIATION(34, 		L"DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK")
	TEST_VARIATION(35, 		L"DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK")
	TEST_VARIATION(36, 		L"DBPROP is DBPROP_PROCEDURETERM - S_OK")
	TEST_VARIATION(37, 		L"DBPROP is DBPROP_PROVIDERNAME - S_OK")
	TEST_VARIATION(38, 		L"DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK")
	TEST_VARIATION(39, 		L"DBPROP is DBPROP_PROVIDERVER - S_OK")
	TEST_VARIATION(40, 		L"DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK")
	TEST_VARIATION(41, 		L"DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK")
	TEST_VARIATION(42, 		L"DBPROP is DBPROP_SCHEMATERM - S_OK")
	TEST_VARIATION(43, 		L"DBPROP is DBPROP_SCHEMAUSAGE - S_OK")
	TEST_VARIATION(44, 		L"DBPROP is DBPROP_SORTONINDEX - S_OK")
	TEST_VARIATION(45, 		L"DBPROP is DBPROP_SQLSUPPORT - S_OK")
	TEST_VARIATION(46, 		L"DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK")
	TEST_VARIATION(47, 		L"DBPROP is DBPROP_SUBQUERIES - S_OK")
	TEST_VARIATION(48, 		L"DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK")
	TEST_VARIATION(49, 		L"DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK")
	TEST_VARIATION(50, 		L"DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK")
	TEST_VARIATION(51, 		L"DBPROP is DBPROP_TABLETERM - S_OK")
	TEST_VARIATION(52, 		L"DBPROP is DBPROP_USERNAME - S_OK")
	TEST_VARIATION(53, 		L"DBPROP is DBPROP_CURRENTCATALOG - S_OK")
	TEST_VARIATION(54, 		L"DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK")
	TEST_VARIATION(55, 		L"DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK")
	TEST_VARIATION(56, 		L"DBPROP is DBPROP_AUTH_INTEGRATED - S_OK")
	TEST_VARIATION(57, 		L"DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK")
	TEST_VARIATION(58, 		L"DBPROP is DBPROP_AUTH_PASSWORD - S_OK")
	TEST_VARIATION(59, 		L"DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK")
	TEST_VARIATION(60, 		L"DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK")
	TEST_VARIATION(61, 		L"DBPROP is DBPROP_AUTH_USERID - S_OK")
	TEST_VARIATION(62, 		L"DBPROP is DBPROP_INIT_ASYNCH - S_OK")
	TEST_VARIATION(63, 		L"DBPROP is DBPROP_INIT_DATASOURCE - S_OK")
	TEST_VARIATION(64, 		L"DBPROP is DBPROP_INIT_HWND - S_OK")
	TEST_VARIATION(65, 		L"DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK")
	TEST_VARIATION(66, 		L"DBPROP is DBPROP_INIT_LCID - S_OK")
	TEST_VARIATION(67, 		L"DBPROP is DBPROP_INIT_LOCATION - S_OK")
	TEST_VARIATION(68, 		L"DBPROP is DBPROP_INIT_MODE - S_OK")
	TEST_VARIATION(69, 		L"DBPROP is DBPROP_INIT_PROMPT - S_OK")
	TEST_VARIATION(70, 		L"DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK")
	TEST_VARIATION(71, 		L"DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK")
	TEST_VARIATION(72, 		L"DBPROP is DBPROP_INIT_TIMEOUT - S_OK")
	TEST_VARIATION(73, 		L"DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK")
	TEST_VARIATION(74, 		L"DBPROP is DBPROP_COL_DEFAULT - S_OK")
	TEST_VARIATION(75, 		L"DBPROP is DBPROP_COL_DESCRIPTION - S_OK")
	TEST_VARIATION(76, 		L"DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK")
	TEST_VARIATION(77, 		L"DBPROP is DBPROP_COL_NULLABLE - S_OK")
	TEST_VARIATION(78, 		L"DBPROP is DBPROP_COL_PRIMARYKEY - S_OK")
	TEST_VARIATION(79, 		L"DBPROP is DBPROP_COL_UNIQUE - S_OK")
	TEST_VARIATION(80, 		L"DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK")
	TEST_VARIATION(81, 		L"DBPROP is DBPROP_INDEX_CLUSTERED - S_OK")
	TEST_VARIATION(82, 		L"DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK")
	TEST_VARIATION(83, 		L"DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK")
	TEST_VARIATION(84, 		L"DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK")
	TEST_VARIATION(85, 		L"DBPROP is DBPROP_INDEX_NULLS - S_OK")
	TEST_VARIATION(86, 		L"DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK")
	TEST_VARIATION(87, 		L"DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK")
	TEST_VARIATION(88, 		L"DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK")
	TEST_VARIATION(89, 		L"DBPROP is DBPROP_INDEX_TYPE - S_OK")
	TEST_VARIATION(90, 		L"DBPROP is DBPROP_INDEX_UNIQUE - S_OK")
	TEST_VARIATION(91, 		L"DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK")
	TEST_VARIATION(92, 		L"DBPROP is DBPROP_TBL_TEMPTABLE - S_OK")
	TEST_VARIATION(93, 		L"DBPROP is DBPROP_ABORTPRESERVE - S_OK")
	TEST_VARIATION(94, 		L"DBPROP is DBPROP_APPENDONLY - S_OK")
	TEST_VARIATION(95, 		L"DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(96, 		L"DBPROP is DBPROP_BOOKMARKS - S_OK")
	TEST_VARIATION(97, 		L"DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK")
	TEST_VARIATION(98, 		L"DBPROP is DBPROP_BOOKMARKTYPE - S_OK")
	TEST_VARIATION(99, 		L"DBPROP is DBPROP_CACHEDEFERRED - S_OK")
	TEST_VARIATION(100, 		L"DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK")
	TEST_VARIATION(101, 		L"DBPROP is DBPROP_CANHOLDROWS - S_OK")
	TEST_VARIATION(102, 		L"DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK")
	TEST_VARIATION(103, 		L"DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK")
	TEST_VARIATION(104, 		L"DBPROP is DBPROP_COLUMNRESTRICT - S_OK")
	TEST_VARIATION(105, 		L"DBPROP is DBPROP_COMMANDTIMEOUT - S_OK")
	TEST_VARIATION(106, 		L"DBPROP is DBPROP_COMMITPRESERVE - S_OK")
	TEST_VARIATION(107, 		L"DBPROP is DBPROP_DEFERRED - S_OK")
	TEST_VARIATION(108, 		L"DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(109, 		L"DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK")
	TEST_VARIATION(110, 		L"DBPROP is DBPROP_FINDCOMPAREOPS - S_OK")
	TEST_VARIATION(111, 		L"DBPROP is DBPROP_IMMOBILEROWS - S_OK")
	TEST_VARIATION(112, 		L"DBPROP is DBPROP_LITERALBOOKMARKS - S_OK")
	TEST_VARIATION(113, 		L"DBPROP is DBPROP_LITERALIDENTITY - S_OK")
	TEST_VARIATION(114, 		L"DBPROP is DBPROP_MAXOPENROWS - S_OK")
	TEST_VARIATION(115, 		L"DBPROP is DBPROP_MAXPENDINGROWS - S_OK")
	TEST_VARIATION(116, 		L"DBPROP is DBPROP_MAXROWS - S_OK")
	TEST_VARIATION(117, 		L"DBPROP is DBPROP_MAYWRITECOLUMN - S_OK")
	TEST_VARIATION(118, 		L"DBPROP is DBPROP_MEMORYUSAGE - S_OK")
	TEST_VARIATION(119, 		L"DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK")
	TEST_VARIATION(120, 		L"DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK")
	TEST_VARIATION(121, 		L"DBPROP is DBPROP_NOTIFYROWDELETE - S_OK")
	TEST_VARIATION(122, 		L"DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK")
	TEST_VARIATION(123, 		L"DBPROP is DBPROP_NOTIFYROWINSERT - S_OK")
	TEST_VARIATION(124, 		L"DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK")
	TEST_VARIATION(125, 		L"DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK")
	TEST_VARIATION(126, 		L"DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK")
	TEST_VARIATION(127, 		L"DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK")
	TEST_VARIATION(128, 		L"DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK")
	TEST_VARIATION(129, 		L"DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK")
	TEST_VARIATION(130, 		L"DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK")
	TEST_VARIATION(131, 		L"DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK")
	TEST_VARIATION(132, 		L"DBPROP is DBPROP_OTHERINSERT - S_OK")
	TEST_VARIATION(133, 		L"DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK")
	TEST_VARIATION(134, 		L"DBPROP is DBPROP_OWNINSERT - S_OK")
	TEST_VARIATION(135, 		L"DBPROP is DBPROP_OWNUPDATEDELETE - S_OK")
	TEST_VARIATION(136, 		L"DBPROP is DBPROP_QUICKRESTART - S_OK")
	TEST_VARIATION(137, 		L"DBPROP is DBPROP_REENTRANTEVENTS - S_OK")
	TEST_VARIATION(138, 		L"DBPROP is DBPROP_REMOVEDELETED - S_OK")
	TEST_VARIATION(139, 		L"DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK")
	TEST_VARIATION(140, 		L"DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK")
	TEST_VARIATION(141, 		L"DBPROP is DBPROP_ROWRESTRICT - S_OK")
	TEST_VARIATION(142, 		L"DBPROP is DBPROP_ROWSET_ASYNCH - S_OK")
	TEST_VARIATION(143, 		L"DBPROP is DBPROP_ROWTHREADMODEL - S_OK")
	TEST_VARIATION(144, 		L"DBPROP is DBPROP_SERVERCURSOR - S_OK")
	TEST_VARIATION(145, 		L"DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK")
	TEST_VARIATION(146, 		L"DBPROP is DBPROP_UPDATABILITY - S_OK")
	TEST_VARIATION(147, 		L"DBPROP is DBPROP_STRONGIDENTITY - S_OK")
	TEST_VARIATION(148, 		L"DBPROP is DBPROP_IAccessor - S_OK")
	TEST_VARIATION(149, 		L"DBPROP is DBPROP_IChapteredRowset - S_OK")
	TEST_VARIATION(150, 		L"DBPROP is DBPROP_IColumnsInfo - S_OK")
	TEST_VARIATION(151, 		L"DBPROP is DBPROP_IColumnsRowset - S_OK")
	TEST_VARIATION(152, 		L"DBPROP is DBPROP_IConnectionPointContainer - S_OK")
	TEST_VARIATION(153, 		L"DBPROP is DBPROP_IConvertType - S_OK")
	TEST_VARIATION(154, 		L"DBPROP is DBPROP_IDBAsynchStatus - S_OK")
	TEST_VARIATION(155, 		L"DBPROP is DBPROP_IRowset - S_OK")
	TEST_VARIATION(156, 		L"DBPROP is DBPROP_IRowsetChange - S_OK")
	TEST_VARIATION(157, 		L"DBPROP is DBPROP_IRowsetFind - S_OK")
	TEST_VARIATION(158, 		L"DBPROP is DBPROP_IRowsetIdentity - S_OK")
	TEST_VARIATION(159, 		L"DBPROP is DBPROP_IRowsetIndex - S_OK")
	TEST_VARIATION(160, 		L"DBPROP is DBPROP_IRowsetInfo - S_OK")
	TEST_VARIATION(161, 		L"DBPROP is DBPROP_IRowsetLocate - S_OK")
	TEST_VARIATION(162, 		L"DBPROP is DBPROP_IRowsetResynch - S_OK")
	TEST_VARIATION(163, 		L"DBPROP is DBPROP_IRowsetScroll - S_OK")
	TEST_VARIATION(164, 		L"DBPROP is DBPROP_IRowsetUpdate - S_OK")
	TEST_VARIATION(165, 		L"DBPROP is DBPROP_IRowsetView - S_OK")
	TEST_VARIATION(166, 		L"DBPROP is DBPROP_IViewChapter - S_OK")
	TEST_VARIATION(167, 		L"DBPROP is DBPROP_IViewFilter - S_OK")
	TEST_VARIATION(168, 		L"DBPROP is DBPROP_IViewRowset - S_OK")
	TEST_VARIATION(169, 		L"DBPROP is DBPROP_IViewSort - S_OK")
	TEST_VARIATION(170, 		L"DBPROP is DBPROP_ILockBytes - S_OK")
	TEST_VARIATION(171, 		L"DBPROP is DBPROP_ISequentialStream - S_OK")
	TEST_VARIATION(172, 		L"DBPROP is DBPROP_IStorage - S_OK")
	TEST_VARIATION(173, 		L"DBPROP is DBPROP_IStream - S_OK")
	TEST_VARIATION(174, 		L"DBPROP is DBPROP_ISupportErrorInfo - S_OK")
	TEST_VARIATION(175, 		L"DBPROP is DBPROP_ALTERCOLUMN - S_OK")
	TEST_VARIATION(176, 		L"DBPROP is DBPROP_CONNECTIONSTATUS - S_OK")
	TEST_VARIATION(177, 		L"DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK")
	TEST_VARIATION(178, 		L"DBPROP is DBPROP_PROVIDERMEMORY - S_OK")
	TEST_VARIATION(179, 		L"DBPROP is DBPROP_SERVERNAME - S_OK")
	TEST_VARIATION(180, 		L"DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK")
	TEST_VARIATION(181, 		L"DBPROP is DBPROP_RESETDATASOURCE - S_OK")
	TEST_VARIATION(182, 		L"DBPROP is DBPROP_INIT_CATALOG - S_OK")
	TEST_VARIATION(183, 		L"DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK")
	TEST_VARIATION(184, 		L"DBPROP is DBPROP_COLUMNLCID - S_OK")
	TEST_VARIATION(185, 		L"DBPROP is DBPROP_ACCESSORDER - S_OK")
	TEST_VARIATION(186, 		L"DBPROP is DBPROP_BOOKMARKINFO - S_OK")
	TEST_VARIATION(187, 		L"DBPROP is DBPROP_HIDDENCOLUMNS - S_OK")
	TEST_VARIATION(188, 		L"DBPROP is DBPROP_LOCKMODE - S_OK")
	TEST_VARIATION(189, 		L"DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK")
	TEST_VARIATION(190, 		L"DBPROP is DBPROP_ROW_BULKOPS - S_OK")
	TEST_VARIATION(191, 		L"DBPROP is DBPROP_SERVERDATAONINSERT - S_OK")
	TEST_VARIATION(192, 		L"DBPROP is DBPROP_STORAGEFLAGS - S_OK")
	TEST_VARIATION(193, 		L"DBPROP is DBPROP_UNIQUEROWS - S_OK")
	TEST_VARIATION(194, 		L"DBPROP is DBPROP_IMultipleResults - S_OK")
	TEST_VARIATION(195, 		L"DBPROP is DBPROP_IRowsetRefresh - S_OK")
	TEST_VARIATION(196, 		L"DBPROP is DBPROP_IParentRowset - S_OK")
	TEST_VARIATION(197, 		L"DBPROP is DBPROP_COL_INCREMENT - S_OK")
	TEST_VARIATION(198, 		L"DBPROP is DBPROP_COL_ISLONG - S_OK")
	TEST_VARIATION(199, 		L"DBPROP is DBPROP_COL_SEED - S_OK")
	TEST_VARIATION(200, 		L"DBPROP is DBPROP_COMSERVICES - S_OK")
	TEST_VARIATION(201, 		L"DBPROP is DBPROP_DATASOURCETYPE - S_OK")
	TEST_VARIATION(202, 		L"DBPROP is DBPROP_GENERATEURL - S_OK")
	TEST_VARIATION(203, 		L"DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK")
	TEST_VARIATION(204, 		L"DBPROP is DBPROP_INIT_BINDFLAGS - S_OK")
	TEST_VARIATION(205, 		L"DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK")
	TEST_VARIATION(206, 		L"DBPROP is DBPROP_INIT_LOCKOWNER - S_OK")
	TEST_VARIATION(207, 		L"DBPROP is DBPROP_CLIENTCURSOR - S_OK")
	TEST_VARIATION(208, 		L"DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK")
	TEST_VARIATION(209, 		L"DBPROP is DBPROP_IBindResource - S_OK")
	TEST_VARIATION(210, 		L"DBPROP is DBPROP_IColumnsInfo2 - S_OK")
	TEST_VARIATION(211, 		L"DBPROP is DBPROP_ICreateRow - S_OK")
	TEST_VARIATION(212, 		L"DBPROP is DBPROP_IGetRow - S_OK")
	TEST_VARIATION(213, 		L"DBPROP is DBPROP_IGetSession - S_OK")
	TEST_VARIATION(214, 		L"DBPROP is DBPROP_IGetSourceRow - S_OK")
	TEST_VARIATION(215, 		L"DBPROP is DBPROP_IRow - S_OK")
	TEST_VARIATION(216, 		L"DBPROP is DBPROP_IRowChange - S_OK")
	TEST_VARIATION(217, 		L"DBPROP is DBPROP_IRowSchemaChange - S_OK")
	TEST_VARIATION(218, 		L"DBPROP is DBPROP_IRowsetCurrentIndex - S_OK")
	TEST_VARIATION(219, 		L"DBPROP is DBPROP_IScopedOperations - S_OK")
	TEST_VARIATION(220, 		L"DBPROP is DBPROP_TABLESTATISTICS - S_OK")
	TEST_VARIATION(221, 		L"DBPROP is DBPROP_IRowsetBookmark - S_OK")
	TEST_VARIATION(222, 		L"DBPROP is DBPROP_SKIPROWCOUNTRESULTS - S_OK")
	TEST_VARIATION(223, 		L"DBPROP is DBPROP_OUTPUTSTREAM - S_OK")
	TEST_VARIATION(224, 		L"DBPROP is DBPROP_OUTPUTENCODING - S_OK")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_Parameters)
//--------------------------------------------------------------------
// @class IDBProperties::Parameters
//
class TCIDProperties_Parameters : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_Parameters,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember GetPropertyInfo with a NULL pcPropertyInfoSets - E_INVALIDARG
	int Variation_1();
	// @cmember GetPropertyInfo with a NULL prgPropertyInfoSets - E_INVALIDARG
	int Variation_2();
	// @cmember GetPropertyInfo with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
	int Variation_3();
	// @cmember GetPropertyInfo with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
	int Variation_4();
	// @cmember GetPropertyInfo with a Special GUID first in the array - E_INVALIDARG
	int Variation_5();
	// @cmember GetPropertyInfo with a Special GUID last in the array - E_INVALIDARG
	int Variation_6();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state - S_OK
	int Variation_7();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL - S_OK
	int Variation_8();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
	int Variation_9();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
	int Variation_10();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED
	int Variation_11();
	// @cmember GetPropertyInfo with an unsupported PropertySet - DB_E_ERRORSOCCURRED
	int Variation_12();
	// @cmember GetPropertyInfo with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
	int Variation_13();
	// @cmember GetProperties with a NULL pcPropertySets - E_INVALIDARG
	int Variation_14();
	// @cmember GetProperties with a NULL prgPropertySets - E_INVALIDARG
	int Variation_15();
	// @cmember GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
	int Variation_16();
	// @cmember GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
	int Variation_17();
	// @cmember GetProperties DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0 - E_INVALIDARG
	int Variation_18();
	// @cmember GetProperties DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs != NULL - E_INVALIDARG
	int Variation_19();
	// @cmember GetProperties DBPROPSET_PROPERTYIESINERROR with 2 PropertyIDSets - E_INVALIDARG
	int Variation_20();
	// @cmember GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
	int Variation_21();
	// @cmember GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
	int Variation_22();
	// @cmember SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG
	int Variation_23();
	// @cmember SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG
	int Variation_24();
	// @cmember SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
	int Variation_25();
	// @cmember SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
	int Variation_26();
	// @cmember GetProperties with DBPROPSET_COLUMN PropertySet - DB_E_ERRORSOCCURRED
	int Variation_27();
	// @cmember GetProperties with DBPROPSET_DATASOURCE PropertySet - S_OK
	int Variation_28();
	// @cmember GetProperties with DBPROPSET_DATASOURCEINFO PropertySet - S_OK
	int Variation_29();
	// @cmember GetProperties with DBPROPSET_DBINIT PropertySet - S_OK
	int Variation_30();
	// @cmember GetProperties with DBPROPSET_INDEX PropertySet - DB_E_ERRORSOCCURRED
	int Variation_31();
	// @cmember GetProperties with DBPROPSET_ROWSET PropertySet - DB_E_ERRORSOCCURRED
	int Variation_32();
	// @cmember GetProperties with DBPROPSET_SESSION PropertySet - DB_E_ERRORSOCCURRED
	int Variation_33();
	// @cmember GetProperties with DBPROPSET_TABLE PropertySet - DB_E_ERRORSOCCURRED
	int Variation_34();
	// @cmember GetProperties with a data source object in an uninitialized state - S_OK
	int Variation_35();
	// @cmember GetProperties with a data source object in an uninitialized state with 0 and NULL - S_OK
	int Variation_36();
	// @cmember GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
	int Variation_37();
	// @cmember GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
	int Variation_38();
	// @cmember GetProperties with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED
	int Variation_39();
	// @cmember GetProperties with a data source object in an uninitialized state - E_INVALIDARG
	int Variation_40();
	// @cmember GetPropertyInfo with DBPROPSET_PROPERTIESINERROR PropertySet - DB_E_ERRORSOCCURRED
	int Variation_41();
	// @cmember GetPropertyInfo with DBPROPSET_DATASOURCE PropertySet - S_OK or DB_E_ERRORSOCCURRED
	int Variation_42();
	// @cmember GetPropertyInfo with all DBPROPSET_DATASOURCE Properties - S_OK or DB_E_ERRORSOCCURRED
	int Variation_43();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - S_OK
	int Variation_44();
	// @cmember GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - DB_E_ERRORSOCCURRED
	int Variation_45();
	// @cmember GetPropertyInfo with a data source object with 0 and NULL for rgPropertyIDSets - S_OK
	int Variation_46();
	// @cmember GetPropertyInfo with 0 and NULL for rgPropertyIDSets and a regular DBPROPSET_ROWSET - S_OK
	int Variation_47();
	// @cmember GetProperties with DBPROP_CURRENTCATALOG after changing the property value - S_OK
	int Variation_48();
	// @cmember GetProperties with DBPROPSET_PROPERTIESINERROR - S_OK
	int Variation_49();
	// @cmember Call GetProperties then call SetProperties - DB_S_ERRORSOCCURRED
	int Variation_50();
	// @cmember Call GetProperties then call SetProperties - S_OK
	int Variation_51();
	// @cmember GetProperties before Initialize with DBPROPSET_PROPERTIESINERROR - S_OK
	int Variation_52();
	// @cmember GetPropertyInfo with a Supported and an Unsupported property - DB_S_ERRORSOCCURRED
	int Variation_53();
	// @cmember GetPropertyInfo with all properties - DB_S_ERRORSOCCURRED
	int Variation_54();
	// @cmember GetPropertyInfo with all DBINIT properties multiple times - S_OK
	int Variation_55();
	// @cmember GetPropertyInfo with all DBINIT properties IDs multiple times - S_OK
	int Variation_56();
	// @cmember GetPropertyInfo with all properties with a NULL ppDescBuffer - S_OK
	int Variation_57();
	// @cmember GetPropertyInfo with all properties  with a NULL ppDescBuffer - DB_S_ERRORSOCCURRED
	int Variation_58();
	// @cmember Call GetProperties then call SetProperties before Initialize - S_OK
	int Variation_59();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_Parameters)
#define THE_CLASS TCIDProperties_Parameters
BEG_TEST_CASE(TCIDProperties_Parameters, TCIDProperties, L"IDBProperties::Parameters")
	TEST_VARIATION(1, 		L"GetPropertyInfo with a NULL pcPropertyInfoSets - E_INVALIDARG")
	TEST_VARIATION(2, 		L"GetPropertyInfo with a NULL prgPropertyInfoSets - E_INVALIDARG")
	TEST_VARIATION(3, 		L"GetPropertyInfo with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG")
	TEST_VARIATION(4, 		L"GetPropertyInfo with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG")
	TEST_VARIATION(5, 		L"GetPropertyInfo with a Special GUID first in the array - E_INVALIDARG")
	TEST_VARIATION(6, 		L"GetPropertyInfo with a Special GUID last in the array - E_INVALIDARG")
	TEST_VARIATION(7, 		L"GetPropertyInfo with a data source object in an uninitialized state - S_OK")
	TEST_VARIATION(8, 		L"GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL - S_OK")
	TEST_VARIATION(9, 		L"GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(10, 		L"GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(11, 		L"GetPropertyInfo with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(12, 		L"GetPropertyInfo with an unsupported PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(13, 		L"GetPropertyInfo with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(14, 		L"GetProperties with a NULL pcPropertySets - E_INVALIDARG")
	TEST_VARIATION(15, 		L"GetProperties with a NULL prgPropertySets - E_INVALIDARG")
	TEST_VARIATION(16, 		L"GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG")
	TEST_VARIATION(17, 		L"GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG")
	TEST_VARIATION(18, 		L"GetProperties DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0 - E_INVALIDARG")
	TEST_VARIATION(19, 		L"GetProperties DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs != NULL - E_INVALIDARG")
	TEST_VARIATION(20, 		L"GetProperties DBPROPSET_PROPERTYIESINERROR with 2 PropertyIDSets - E_INVALIDARG")
	TEST_VARIATION(21, 		L"GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(22, 		L"GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(23, 		L"SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG")
	TEST_VARIATION(24, 		L"SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG")
	TEST_VARIATION(25, 		L"SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(26, 		L"SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(27, 		L"GetProperties with DBPROPSET_COLUMN PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(28, 		L"GetProperties with DBPROPSET_DATASOURCE PropertySet - S_OK")
	TEST_VARIATION(29, 		L"GetProperties with DBPROPSET_DATASOURCEINFO PropertySet - S_OK")
	TEST_VARIATION(30, 		L"GetProperties with DBPROPSET_DBINIT PropertySet - S_OK")
	TEST_VARIATION(31, 		L"GetProperties with DBPROPSET_INDEX PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(32, 		L"GetProperties with DBPROPSET_ROWSET PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(33, 		L"GetProperties with DBPROPSET_SESSION PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(34, 		L"GetProperties with DBPROPSET_TABLE PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(35, 		L"GetProperties with a data source object in an uninitialized state - S_OK")
	TEST_VARIATION(36, 		L"GetProperties with a data source object in an uninitialized state with 0 and NULL - S_OK")
	TEST_VARIATION(37, 		L"GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(38, 		L"GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(39, 		L"GetProperties with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(40, 		L"GetProperties with a data source object in an uninitialized state - E_INVALIDARG")
	TEST_VARIATION(41, 		L"GetPropertyInfo with DBPROPSET_PROPERTIESINERROR PropertySet - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(42, 		L"GetPropertyInfo with DBPROPSET_DATASOURCE PropertySet - S_OK or DB_E_ERRORSOCCURRED")
	TEST_VARIATION(43, 		L"GetPropertyInfo with all DBPROPSET_DATASOURCE Properties - S_OK or DB_E_ERRORSOCCURRED")
	TEST_VARIATION(44, 		L"GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - S_OK")
	TEST_VARIATION(45, 		L"GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - DB_E_ERRORSOCCURRED")
	TEST_VARIATION(46, 		L"GetPropertyInfo with a data source object with 0 and NULL for rgPropertyIDSets - S_OK")
	TEST_VARIATION(47, 		L"GetPropertyInfo with 0 and NULL for rgPropertyIDSets and a regular DBPROPSET_ROWSET - S_OK")
	TEST_VARIATION(48, 		L"GetProperties with DBPROP_CURRENTCATALOG after changing the property value - S_OK")
	TEST_VARIATION(49, 		L"GetProperties with DBPROPSET_PROPERTIESINERROR - S_OK")
	TEST_VARIATION(50, 		L"Call GetProperties then call SetProperties - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(51, 		L"Call GetProperties then call SetProperties - S_OK")
	TEST_VARIATION(52, 		L"GetProperties before Initialize with DBPROPSET_PROPERTIESINERROR - S_OK")
	TEST_VARIATION(53, 		L"GetPropertyInfo with a Supported and an Unsupported property - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(54, 		L"GetPropertyInfo with all properties - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(55, 		L"GetPropertyInfo with all DBINIT properties multiple times - S_OK")
	TEST_VARIATION(56, 		L"GetPropertyInfo with all DBINIT properties IDs multiple times - S_OK")
	TEST_VARIATION(57, 		L"GetPropertyInfo with all properties with a NULL ppDescBuffer - S_OK")
	TEST_VARIATION(58, 		L"GetPropertyInfo with all properties  with a NULL ppDescBuffer - DB_S_ERRORSOCCURRED")
	TEST_VARIATION(59, 		L"Call GetProperties then call SetProperties before Initialize - S_OK")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_GetPropertyInfoBulk)
//--------------------------------------------------------------------
// @class IDBProperties::GetPropertyInfoBulk
//
class TCIDProperties_GetPropertyInfoBulk : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_GetPropertyInfoBulk,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember Property Set Guid = DBPROPSET_DATASOURCEALL
	int Variation_1();
	// @cmember Property Set Guid = DBPROPSET_DATASOURCEINFOALL
	int Variation_2();
	// @cmember Property Set Guid = DBPROPSET_DBINITALL
	int Variation_3();
	// @cmember Property Set Guid = DBPROPSET_ROWSETALL
	int Variation_4();
	// @cmember Property Set Guid = DBPROPSET_SESSIONALL
	int Variation_5();
	// @cmember GetPropertyInfo cPropertyIDSets = 0
	int Variation_6();
	// @cmember Call GetPropertyInfo with multiple Property Set ALL Guids
	int Variation_7();
	// @cmember Call GetPropertyInfo with multiple Property Set guid first
	int Variation_8();
	// @cmember Call GetPropertyInfo with multiple Property Set guid second
	int Variation_9();
	// @cmember Call GetPropertyInfo cPropertyIDSets = 0 before Initialize
	int Variation_10();
	// @cmember Call GetPropertyInfo cPropertyIDSets = 0 without ppDescBuffer before Initialize
	int Variation_11();
	// @cmember Call GetPropertyInfo with DBPROPSET_COLUMN before Initialize
	int Variation_12();
	// @cmember Call GetPropertyInfo with DBPROPSET_DATASOURCE before Initialize
	int Variation_13();
	// @cmember Call GetPropertyInfo with DBPROPSET_DATASOURCEINFO before Initialize
	int Variation_14();
	// @cmember Call GetPropertyInfo with DBPROPSET_INDEX before Initialize
	int Variation_15();
	// @cmember Call GetPropertyInfo with DBPROPSET_SESSION before Initialize
	int Variation_16();
	// @cmember Call GetPropertyInfo with DBPROPSET_TABLE before Initialize
	int Variation_17();
	// @cmember Call GetPropertyInfo with DBPROPSET_TRUSTEE before Initialize
	int Variation_18();
	// @cmember Call GetPropertyInfo with DBPROPSET_VIEW before Initialize
	int Variation_19();
	// @cmember Call GetPropertyInfo with DBPROPSET_CONSTRAINTALL before Initialize
	int Variation_20();
	// @cmember Call GetPropertyInfo with all combinations of multiple Property Set guids
	int Variation_21();
	// @cmember Property Set Guid = DBPROPSET_STREAMALL
	int Variation_22();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_GetPropertyInfoBulk)
#define THE_CLASS TCIDProperties_GetPropertyInfoBulk
BEG_TEST_CASE(TCIDProperties_GetPropertyInfoBulk, TCIDProperties, L"IDBProperties::GetPropertyInfoBulk")
	TEST_VARIATION(1, 		L"Property Set Guid = DBPROPSET_DATASOURCEALL")
	TEST_VARIATION(2, 		L"Property Set Guid = DBPROPSET_DATASOURCEINFOALL")
	TEST_VARIATION(3, 		L"Property Set Guid = DBPROPSET_DBINITALL")
	TEST_VARIATION(4, 		L"Property Set Guid = DBPROPSET_ROWSETALL")
	TEST_VARIATION(5, 		L"Property Set Guid = DBPROPSET_SESSIONALL")
	TEST_VARIATION(6, 		L"GetPropertyInfo cPropertyIDSets = 0")
	TEST_VARIATION(7, 		L"Call GetPropertyInfo with multiple Property Set ALL Guids")
	TEST_VARIATION(8, 		L"Call GetPropertyInfo with multiple Property Set guid first")
	TEST_VARIATION(9, 		L"Call GetPropertyInfo with multiple Property Set guid second")
	TEST_VARIATION(10, 		L"Call GetPropertyInfo cPropertyIDSets = 0 before Initialize")
	TEST_VARIATION(11, 		L"Call GetPropertyInfo cPropertyIDSets = 0 without ppDescBuffer before Initialize")
	TEST_VARIATION(12, 		L"Call GetPropertyInfo with DBPROPSET_COLUMN before Initialize")
	TEST_VARIATION(13, 		L"Call GetPropertyInfo with DBPROPSET_DATASOURCE before Initialize")
	TEST_VARIATION(14, 		L"Call GetPropertyInfo with DBPROPSET_DATASOURCEINFO before Initialize")
	TEST_VARIATION(15, 		L"Call GetPropertyInfo with DBPROPSET_INDEX before Initialize")
	TEST_VARIATION(16, 		L"Call GetPropertyInfo with DBPROPSET_SESSION before Initialize")
	TEST_VARIATION(17, 		L"Call GetPropertyInfo with DBPROPSET_TABLE before Initialize")
	TEST_VARIATION(18, 		L"Call GetPropertyInfo with DBPROPSET_TRUSTEE before Initialize")
	TEST_VARIATION(19, 		L"Call GetPropertyInfo with DBPROPSET_VIEW before Initialize")
	TEST_VARIATION(20, 		L"Call GetPropertyInfo with DBPROPSET_CONSTRAINTALL before Initialize")
	TEST_VARIATION(21, 		L"Call GetPropertyInfo with all combinations of multiple Property Set guids")
	TEST_VARIATION(22, 		L"Property Set Guid = DBPROPSET_STREAMALL")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_SetPropertiesBulk)
//--------------------------------------------------------------------
// @class IDBProperties::SetPropertiesBulk
//
class TCIDProperties_SetPropertiesBulk : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_SetPropertiesBulk,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember Multiple property sets, no property sets supported or settable
	int Variation_1();
	// @cmember Multiple property sets, multiple properties, same property set twice
	int Variation_2();
	// @cmember Multiple property sets, multiple properties
	int Variation_3();
	// @cmember Multiple property sets, further testing for DBPROP_CURRENTCATALOG
	int Variation_4();
	// @cmember Multiple property sets, first fails, second successful
	int Variation_5();
	// @cmember SetProperties with 0 and NULL
	int Variation_6();
	// @cmember SetProperties with 0 and VALID
	int Variation_7();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_SetPropertiesBulk)
#define THE_CLASS TCIDProperties_SetPropertiesBulk
BEG_TEST_CASE(TCIDProperties_SetPropertiesBulk, TCIDProperties, L"IDBProperties::SetPropertiesBulk")
	TEST_VARIATION(1, 		L"Multiple property sets, no property sets supported or settable")
	TEST_VARIATION(2, 		L"Multiple property sets, multiple properties, same property set twice")
	TEST_VARIATION(3, 		L"Multiple property sets, multiple properties")
	TEST_VARIATION(4, 		L"Multiple property sets, further testing for DBPROP_CURRENTCATALOG")
	TEST_VARIATION(5, 		L"Multiple property sets, first fails, second successful")
	TEST_VARIATION(6, 		L"SetProperties with 0 and NULL")
	TEST_VARIATION(7, 		L"SetProperties with 0 and VALID")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_SetProperties)
//--------------------------------------------------------------------
// @class set all supported properties
//
class TCIDProperties_SetProperties : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();

	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_SetProperties,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();

	// {{ TCW_TESTVARS()
	// @cmember DBPROP is DBPROP_ACTIVESESSIONS - S_OK
	int Variation_1();
	// @cmember DBPROP is DBPROP_ASYNCTXNABORT - S_OK
	int Variation_2();
	// @cmember DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
	int Variation_3();
	// @cmember DBPROP is DBPROP_BYREFACCESSORS - S_OK
	int Variation_4();
	// @cmember DBPROP is DBPROP_CATALOGLOCATION - S_OK
	int Variation_5();
	// @cmember DBPROP is DBPROP_CATALOGTERM - S_OK
	int Variation_6();
	// @cmember DBPROP is DBPROP_CATALOGUSAGE - S_OK
	int Variation_7();
	// @cmember DBPROP is DBPROP_COLUMNDEFINITION - S_OK
	int Variation_8();
	// @cmember DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
	int Variation_9();
	// @cmember DBPROP is DBPROP_DATASOURCENAME - S_OK
	int Variation_10();
	// @cmember DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
	int Variation_11();
	// @cmember DBPROP is DBPROP_DBMSNAME - S_OK
	int Variation_12();
	// @cmember DBPROP is DBPROP_DBMSVER - S_OK
	int Variation_13();
	// @cmember DBPROP is DBPROP_DSOTHREADMODEL - S_OK
	int Variation_14();
	// @cmember DBPROP is DBPROP_GROUPBY - S_OK
	int Variation_15();
	// @cmember DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
	int Variation_16();
	// @cmember DBPROP is DBPROP_IDENTIFIERCASE - S_OK
	int Variation_17();
	// @cmember DBPROP is DBPROP_MAXINDEXSIZE - S_OK
	int Variation_18();
	// @cmember DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
	int Variation_19();
	// @cmember DBPROP is DBPROP_MAXORSINFILTER - S_OK
	int Variation_20();
	// @cmember DBPROP is DBPROP_MAXROWSIZE - S_OK
	int Variation_21();
	// @cmember DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
	int Variation_22();
	// @cmember DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
	int Variation_23();
	// @cmember DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
	int Variation_24();
	// @cmember DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
	int Variation_25();
	// @cmember DBPROP is DBPROP_MULTIPLERESULTS - S_OK
	int Variation_26();
	// @cmember DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
	int Variation_27();
	// @cmember DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
	int Variation_28();
	// @cmember DBPROP is DBPROP_NULLCOLLATION - S_OK
	int Variation_29();
	// @cmember DBPROP is DBPROP_OLEOBJECTS - S_OK
	int Variation_30();
	// @cmember DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
	int Variation_31();
	// @cmember DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
	int Variation_32();
	// @cmember DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
	int Variation_33();
	// @cmember DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
	int Variation_34();
	// @cmember DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
	int Variation_35();
	// @cmember DBPROP is DBPROP_PROCEDURETERM - S_OK
	int Variation_36();
	// @cmember DBPROP is DBPROP_PROVIDERNAME - S_OK
	int Variation_37();
	// @cmember DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
	int Variation_38();
	// @cmember DBPROP is DBPROP_PROVIDERVER - S_OK
	int Variation_39();
	// @cmember DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
	int Variation_40();
	// @cmember DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
	int Variation_41();
	// @cmember DBPROP is DBPROP_SCHEMATERM - S_OK
	int Variation_42();
	// @cmember DBPROP is DBPROP_SCHEMAUSAGE - S_OK
	int Variation_43();
	// @cmember DBPROP is DBPROP_SORTONINDEX - S_OK
	int Variation_44();
	// @cmember DBPROP is DBPROP_SQLSUPPORT - S_OK
	int Variation_45();
	// @cmember DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
	int Variation_46();
	// @cmember DBPROP is DBPROP_SUBQUERIES - S_OK
	int Variation_47();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
	int Variation_48();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
	int Variation_49();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
	int Variation_50();
	// @cmember DBPROP is DBPROP_TABLETERM - S_OK
	int Variation_51();
	// @cmember DBPROP is DBPROP_USERNAME - S_OK
	int Variation_52();
	// @cmember DBPROP is DBPROP_CURRENTCATALOG - S_OK
	int Variation_53();
	// @cmember DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
	int Variation_54();
	// @cmember DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
	int Variation_55();
	// @cmember DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
	int Variation_56();
	// @cmember DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
	int Variation_57();
	// @cmember DBPROP is DBPROP_AUTH_PASSWORD - S_OK
	int Variation_58();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
	int Variation_59();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
	int Variation_60();
	// @cmember DBPROP is DBPROP_AUTH_USERID - S_OK
	int Variation_61();
	// @cmember DBPROP is DBPROP_INIT_ASYNCH - S_OK
	int Variation_62();
	// @cmember DBPROP is DBPROP_INIT_DATASOURCE - S_OK
	int Variation_63();
	// @cmember DBPROP is DBPROP_INIT_HWND - S_OK
	int Variation_64();
	// @cmember DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
	int Variation_65();
	// @cmember DBPROP is DBPROP_INIT_LCID - S_OK
	int Variation_66();
	// @cmember DBPROP is DBPROP_INIT_LOCATION - S_OK
	int Variation_67();
	// @cmember DBPROP is DBPROP_INIT_MODE - S_OK
	int Variation_68();
	// @cmember DBPROP is DBPROP_INIT_PROMPT - S_OK
	int Variation_69();
	// @cmember DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
	int Variation_70();
	// @cmember DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
	int Variation_71();
	// @cmember DBPROP is DBPROP_INIT_TIMEOUT - S_OK
	int Variation_72();
	// @cmember DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
	int Variation_73();
	// @cmember DBPROP is DBPROP_COL_DEFAULT - S_OK
	int Variation_74();
	// @cmember DBPROP is DBPROP_COL_DESCRIPTION - S_OK
	int Variation_75();
	// @cmember DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
	int Variation_76();
	// @cmember DBPROP is DBPROP_COL_NULLABLE - S_OK
	int Variation_77();
	// @cmember DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
	int Variation_78();
	// @cmember DBPROP is DBPROP_COL_UNIQUE - S_OK
	int Variation_79();
	// @cmember DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
	int Variation_80();
	// @cmember DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
	int Variation_81();
	// @cmember DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
	int Variation_82();
	// @cmember DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
	int Variation_83();
	// @cmember DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
	int Variation_84();
	// @cmember DBPROP is DBPROP_INDEX_NULLS - S_OK
	int Variation_85();
	// @cmember DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
	int Variation_86();
	// @cmember DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
	int Variation_87();
	// @cmember DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
	int Variation_88();
	// @cmember DBPROP is DBPROP_INDEX_TYPE - S_OK
	int Variation_89();
	// @cmember DBPROP is DBPROP_INDEX_UNIQUE - S_OK
	int Variation_90();
	// @cmember DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
	int Variation_91();
	// @cmember DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
	int Variation_92();
	// @cmember DBPROP is DBPROP_ABORTPRESERVE - S_OK
	int Variation_93();
	// @cmember DBPROP is DBPROP_APPENDONLY - S_OK
	int Variation_94();
	// @cmember DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
	int Variation_95();
	// @cmember DBPROP is DBPROP_BOOKMARKS - S_OK
	int Variation_96();
	// @cmember DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
	int Variation_97();
	// @cmember DBPROP is DBPROP_BOOKMARKTYPE - S_OK
	int Variation_98();
	// @cmember DBPROP is DBPROP_CACHEDEFERRED - S_OK
	int Variation_99();
	// @cmember DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
	int Variation_100();
	// @cmember DBPROP is DBPROP_CANHOLDROWS - S_OK
	int Variation_101();
	// @cmember DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
	int Variation_102();
	// @cmember DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
	int Variation_103();
	// @cmember DBPROP is DBPROP_COLUMNRESTRICT - S_OK
	int Variation_104();
	// @cmember DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
	int Variation_105();
	// @cmember DBPROP is DBPROP_COMMITPRESERVE - S_OK
	int Variation_106();
	// @cmember DBPROP is DBPROP_DEFERRED - S_OK
	int Variation_107();
	// @cmember DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
	int Variation_108();
	// @cmember DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
	int Variation_109();
	// @cmember DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
	int Variation_110();
	// @cmember DBPROP is DBPROP_IMMOBILEROWS - S_OK
	int Variation_111();
	// @cmember DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
	int Variation_112();
	// @cmember DBPROP is DBPROP_LITERALIDENTITY - S_OK
	int Variation_113();
	// @cmember DBPROP is DBPROP_MAXOPENROWS - S_OK
	int Variation_114();
	// @cmember DBPROP is DBPROP_MAXPENDINGROWS - S_OK
	int Variation_115();
	// @cmember DBPROP is DBPROP_MAXROWS - S_OK
	int Variation_116();
	// @cmember DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
	int Variation_117();
	// @cmember DBPROP is DBPROP_MEMORYUSAGE - S_OK
	int Variation_118();
	// @cmember DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
	int Variation_119();
	// @cmember DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
	int Variation_120();
	// @cmember DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
	int Variation_121();
	// @cmember DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
	int Variation_122();
	// @cmember DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
	int Variation_123();
	// @cmember DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
	int Variation_124();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
	int Variation_125();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
	int Variation_126();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
	int Variation_127();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
	int Variation_128();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
	int Variation_129();
	// @cmember DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
	int Variation_130();
	// @cmember DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
	int Variation_131();
	// @cmember DBPROP is DBPROP_OTHERINSERT - S_OK
	int Variation_132();
	// @cmember DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
	int Variation_133();
	// @cmember DBPROP is DBPROP_OWNINSERT - S_OK
	int Variation_134();
	// @cmember DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
	int Variation_135();
	// @cmember DBPROP is DBPROP_QUICKRESTART - S_OK
	int Variation_136();
	// @cmember DBPROP is DBPROP_REENTRANTEVENTS - S_OK
	int Variation_137();
	// @cmember DBPROP is DBPROP_REMOVEDELETED - S_OK
	int Variation_138();
	// @cmember DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
	int Variation_139();
	// @cmember DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
	int Variation_140();
	// @cmember DBPROP is DBPROP_ROWRESTRICT - S_OK
	int Variation_141();
	// @cmember DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
	int Variation_142();
	// @cmember DBPROP is DBPROP_ROWTHREADMODEL - S_OK
	int Variation_143();
	// @cmember DBPROP is DBPROP_SERVERCURSOR - S_OK
	int Variation_144();
	// @cmember DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
	int Variation_145();
	// @cmember DBPROP is DBPROP_UPDATABILITY - S_OK
	int Variation_146();
	// @cmember DBPROP is DBPROP_STRONGIDENTITY - S_OK
	int Variation_147();
	// @cmember DBPROP is DBPROP_IAccessor - S_OK
	int Variation_148();
	// @cmember DBPROP is DBPROP_IChapteredRowset - S_OK
	int Variation_149();
	// @cmember DBPROP is DBPROP_IColumnsInfo - S_OK
	int Variation_150();
	// @cmember DBPROP is DBPROP_IColumnsRowset - S_OK
	int Variation_151();
	// @cmember DBPROP is DBPROP_IConnectionPointContainer - S_OK
	int Variation_152();
	// @cmember DBPROP is DBPROP_IConvertType - S_OK
	int Variation_153();
	// @cmember DBPROP is DBPROP_IDBAsynchStatus - S_OK
	int Variation_154();
	// @cmember DBPROP is DBPROP_IRowset - S_OK
	int Variation_155();
	// @cmember DBPROP is DBPROP_IRowsetChange - S_OK
	int Variation_156();
	// @cmember DBPROP is DBPROP_IRowsetFind - S_OK
	int Variation_157();
	// @cmember DBPROP is DBPROP_IRowsetIdentity - S_OK
	int Variation_158();
	// @cmember DBPROP is DBPROP_IRowsetIndex - S_OK
	int Variation_159();
	// @cmember DBPROP is DBPROP_IRowsetInfo - S_OK
	int Variation_160();
	// @cmember DBPROP is DBPROP_IRowsetLocate - S_OK
	int Variation_161();
	// @cmember DBPROP is DBPROP_IRowsetResynch - S_OK
	int Variation_162();
	// @cmember DBPROP is DBPROP_IRowsetScroll - S_OK
	int Variation_163();
	// @cmember DBPROP is DBPROP_IRowsetUpdate - S_OK
	int Variation_164();
	// @cmember DBPROP is DBPROP_IRowsetView - S_OK
	int Variation_165();
	// @cmember DBPROP is DBPROP_IViewChapter - S_OK
	int Variation_166();
	// @cmember DBPROP is DBPROP_IViewFilter - S_OK
	int Variation_167();
	// @cmember DBPROP is DBPROP_IViewRowset - S_OK
	int Variation_168();
	// @cmember DBPROP is DBPROP_IViewSort - S_OK
	int Variation_169();
	// @cmember DBPROP is DBPROP_ILockBytes - S_OK
	int Variation_170();
	// @cmember DBPROP is DBPROP_ISequentialStream - S_OK
	int Variation_171();
	// @cmember DBPROP is DBPROP_IStorage - S_OK
	int Variation_172();
	// @cmember DBPROP is DBPROP_IStream - S_OK
	int Variation_173();
	// @cmember DBPROP is DBPROP_ISupportErrorInfo - S_OK
	int Variation_174();
	// @cmember DBPROP is DBPROP_ALTERCOLUMN - S_OK
	int Variation_175();
	// @cmember DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
	int Variation_176();
	// @cmember DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
	int Variation_177();
	// @cmember DBPROP is DBPROP_PROVIDERMEMORY - S_OK
	int Variation_178();
	// @cmember DBPROP is DBPROP_SERVERNAME - S_OK
	int Variation_179();
	// @cmember DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
	int Variation_180();
	// @cmember DBPROP is DBPROP_RESETDATASOURCE - S_OK
	int Variation_181();
	// @cmember DBPROP is DBPROP_INIT_CATALOG - S_OK
	int Variation_182();
	// @cmember DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
	int Variation_183();
	// @cmember DBPROP is DBPROP_COLUMNLCID - S_OK
	int Variation_184();
	// @cmember DBPROP is DBPROP_ACCESSORDER - S_OK
	int Variation_185();
	// @cmember DBPROP is DBPROP_BOOKMARKINFO - S_OK
	int Variation_186();
	// @cmember DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
	int Variation_187();
	// @cmember DBPROP is DBPROP_LOCKMODE - S_OK
	int Variation_188();
	// @cmember DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
	int Variation_189();
	// @cmember DBPROP is DBPROP_ROW_BULKOPS - S_OK
	int Variation_190();
	// @cmember DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
	int Variation_191();
	// @cmember DBPROP is DBPROP_STORAGEFLAGS - S_OK
	int Variation_192();
	// @cmember DBPROP is DBPROP_UNIQUEROWS - S_OK
	int Variation_193();
	// @cmember DBPROP is DBPROP_IMultipleResults - S_OK
	int Variation_194();
	// @cmember DBPROP is DBPROP_IRowsetRefresh - S_OK
	int Variation_195();
	// @cmember DBPROP is DBPROP_IParentRowset - S_OK
	int Variation_196();
	// @cmember DBPROP is DBPROP_COL_INCREMENT - S_OK
	int Variation_197();
	// @cmember DBPROP is DBPROP_COL_ISLONG - S_OK
	int Variation_198();
	// @cmember DBPROP is DBPROP_COL_SEED - S_OK
	int Variation_199();
	// @cmember DBPROP is DBPROP_COMSERVICES - S_OK
	int Variation_200();
	// @cmember DBPROP is DBPROP_DATASOURCETYPE - S_OK
	int Variation_201();
	// @cmember DBPROP is DBPROP_GENERATEURL - S_OK
	int Variation_202();
	// @cmember DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
	int Variation_203();
	// @cmember DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
	int Variation_204();
	// @cmember DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
	int Variation_205();
	// @cmember DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
	int Variation_206();
	// @cmember DBPROP is DBPROP_CLIENTCURSOR - S_OK
	int Variation_207();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
	int Variation_208();
	// @cmember DBPROP is DBPROP_IBindResource - S_OK
	int Variation_209();
	// @cmember DBPROP is DBPROP_IColumnsInfo2 - S_OK
	int Variation_210();
	// @cmember DBPROP is DBPROP_ICreateRow - S_OK
	int Variation_211();
	// @cmember DBPROP is DBPROP_IGetRow - S_OK
	int Variation_212();
	// @cmember DBPROP is DBPROP_IGetSession - S_OK
	int Variation_213();
	// @cmember DBPROP is DBPROP_IGetSourceRow - S_OK
	int Variation_214();
	// @cmember DBPROP is DBPROP_IRow - S_OK
	int Variation_215();
	// @cmember DBPROP is DBPROP_IRowChange - S_OK
	int Variation_216();
	// @cmember DBPROP is DBPROP_IRowSchemaChange - S_OK
	int Variation_217();
	// @cmember DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
	int Variation_218();
	// @cmember DBPROP is DBPROP_IScopedOperations - S_OK
	int Variation_219();
	// @cmember DBPROP is DBPROP_TABLESTATISTICS - S_OK
	int Variation_220();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_SetProperties)
#define THE_CLASS TCIDProperties_SetProperties
BEG_TEST_CASE(TCIDProperties_SetProperties, TCIDProperties, L"set all supported properties")
	TEST_VARIATION(1, 		L"DBPROP is DBPROP_ACTIVESESSIONS - S_OK")
	TEST_VARIATION(2, 		L"DBPROP is DBPROP_ASYNCTXNABORT - S_OK")
	TEST_VARIATION(3, 		L"DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK")
	TEST_VARIATION(4, 		L"DBPROP is DBPROP_BYREFACCESSORS - S_OK")
	TEST_VARIATION(5, 		L"DBPROP is DBPROP_CATALOGLOCATION - S_OK")
	TEST_VARIATION(6, 		L"DBPROP is DBPROP_CATALOGTERM - S_OK")
	TEST_VARIATION(7, 		L"DBPROP is DBPROP_CATALOGUSAGE - S_OK")
	TEST_VARIATION(8, 		L"DBPROP is DBPROP_COLUMNDEFINITION - S_OK")
	TEST_VARIATION(9, 		L"DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK")
	TEST_VARIATION(10, 		L"DBPROP is DBPROP_DATASOURCENAME - S_OK")
	TEST_VARIATION(11, 		L"DBPROP is DBPROP_DATASOURCEREADONLY - S_OK")
	TEST_VARIATION(12, 		L"DBPROP is DBPROP_DBMSNAME - S_OK")
	TEST_VARIATION(13, 		L"DBPROP is DBPROP_DBMSVER - S_OK")
	TEST_VARIATION(14, 		L"DBPROP is DBPROP_DSOTHREADMODEL - S_OK")
	TEST_VARIATION(15, 		L"DBPROP is DBPROP_GROUPBY - S_OK")
	TEST_VARIATION(16, 		L"DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK")
	TEST_VARIATION(17, 		L"DBPROP is DBPROP_IDENTIFIERCASE - S_OK")
	TEST_VARIATION(18, 		L"DBPROP is DBPROP_MAXINDEXSIZE - S_OK")
	TEST_VARIATION(19, 		L"DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK")
	TEST_VARIATION(20, 		L"DBPROP is DBPROP_MAXORSINFILTER - S_OK")
	TEST_VARIATION(21, 		L"DBPROP is DBPROP_MAXROWSIZE - S_OK")
	TEST_VARIATION(22, 		L"DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK")
	TEST_VARIATION(23, 		L"DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK")
	TEST_VARIATION(24, 		L"DBPROP is DBPROP_MAXTABLESINSELECT - S_OK")
	TEST_VARIATION(25, 		L"DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK")
	TEST_VARIATION(26, 		L"DBPROP is DBPROP_MULTIPLERESULTS - S_OK")
	TEST_VARIATION(27, 		L"DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK")
	TEST_VARIATION(28, 		L"DBPROP is DBPROP_MULTITABLEUPDATE - S_OK")
	TEST_VARIATION(29, 		L"DBPROP is DBPROP_NULLCOLLATION - S_OK")
	TEST_VARIATION(30, 		L"DBPROP is DBPROP_OLEOBJECTS - S_OK")
	TEST_VARIATION(31, 		L"DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK")
	TEST_VARIATION(32, 		L"DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK")
	TEST_VARIATION(33, 		L"DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK")
	TEST_VARIATION(34, 		L"DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK")
	TEST_VARIATION(35, 		L"DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK")
	TEST_VARIATION(36, 		L"DBPROP is DBPROP_PROCEDURETERM - S_OK")
	TEST_VARIATION(37, 		L"DBPROP is DBPROP_PROVIDERNAME - S_OK")
	TEST_VARIATION(38, 		L"DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK")
	TEST_VARIATION(39, 		L"DBPROP is DBPROP_PROVIDERVER - S_OK")
	TEST_VARIATION(40, 		L"DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK")
	TEST_VARIATION(41, 		L"DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK")
	TEST_VARIATION(42, 		L"DBPROP is DBPROP_SCHEMATERM - S_OK")
	TEST_VARIATION(43, 		L"DBPROP is DBPROP_SCHEMAUSAGE - S_OK")
	TEST_VARIATION(44, 		L"DBPROP is DBPROP_SORTONINDEX - S_OK")
	TEST_VARIATION(45, 		L"DBPROP is DBPROP_SQLSUPPORT - S_OK")
	TEST_VARIATION(46, 		L"DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK")
	TEST_VARIATION(47, 		L"DBPROP is DBPROP_SUBQUERIES - S_OK")
	TEST_VARIATION(48, 		L"DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK")
	TEST_VARIATION(49, 		L"DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK")
	TEST_VARIATION(50, 		L"DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK")
	TEST_VARIATION(51, 		L"DBPROP is DBPROP_TABLETERM - S_OK")
	TEST_VARIATION(52, 		L"DBPROP is DBPROP_USERNAME - S_OK")
	TEST_VARIATION(53, 		L"DBPROP is DBPROP_CURRENTCATALOG - S_OK")
	TEST_VARIATION(54, 		L"DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK")
	TEST_VARIATION(55, 		L"DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK")
	TEST_VARIATION(56, 		L"DBPROP is DBPROP_AUTH_INTEGRATED - S_OK")
	TEST_VARIATION(57, 		L"DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK")
	TEST_VARIATION(58, 		L"DBPROP is DBPROP_AUTH_PASSWORD - S_OK")
	TEST_VARIATION(59, 		L"DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK")
	TEST_VARIATION(60, 		L"DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK")
	TEST_VARIATION(61, 		L"DBPROP is DBPROP_AUTH_USERID - S_OK")
	TEST_VARIATION(62, 		L"DBPROP is DBPROP_INIT_ASYNCH - S_OK")
	TEST_VARIATION(63, 		L"DBPROP is DBPROP_INIT_DATASOURCE - S_OK")
	TEST_VARIATION(64, 		L"DBPROP is DBPROP_INIT_HWND - S_OK")
	TEST_VARIATION(65, 		L"DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK")
	TEST_VARIATION(66, 		L"DBPROP is DBPROP_INIT_LCID - S_OK")
	TEST_VARIATION(67, 		L"DBPROP is DBPROP_INIT_LOCATION - S_OK")
	TEST_VARIATION(68, 		L"DBPROP is DBPROP_INIT_MODE - S_OK")
	TEST_VARIATION(69, 		L"DBPROP is DBPROP_INIT_PROMPT - S_OK")
	TEST_VARIATION(70, 		L"DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK")
	TEST_VARIATION(71, 		L"DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK")
	TEST_VARIATION(72, 		L"DBPROP is DBPROP_INIT_TIMEOUT - S_OK")
	TEST_VARIATION(73, 		L"DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK")
	TEST_VARIATION(74, 		L"DBPROP is DBPROP_COL_DEFAULT - S_OK")
	TEST_VARIATION(75, 		L"DBPROP is DBPROP_COL_DESCRIPTION - S_OK")
	TEST_VARIATION(76, 		L"DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK")
	TEST_VARIATION(77, 		L"DBPROP is DBPROP_COL_NULLABLE - S_OK")
	TEST_VARIATION(78, 		L"DBPROP is DBPROP_COL_PRIMARYKEY - S_OK")
	TEST_VARIATION(79, 		L"DBPROP is DBPROP_COL_UNIQUE - S_OK")
	TEST_VARIATION(80, 		L"DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK")
	TEST_VARIATION(81, 		L"DBPROP is DBPROP_INDEX_CLUSTERED - S_OK")
	TEST_VARIATION(82, 		L"DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK")
	TEST_VARIATION(83, 		L"DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK")
	TEST_VARIATION(84, 		L"DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK")
	TEST_VARIATION(85, 		L"DBPROP is DBPROP_INDEX_NULLS - S_OK")
	TEST_VARIATION(86, 		L"DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK")
	TEST_VARIATION(87, 		L"DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK")
	TEST_VARIATION(88, 		L"DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK")
	TEST_VARIATION(89, 		L"DBPROP is DBPROP_INDEX_TYPE - S_OK")
	TEST_VARIATION(90, 		L"DBPROP is DBPROP_INDEX_UNIQUE - S_OK")
	TEST_VARIATION(91, 		L"DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK")
	TEST_VARIATION(92, 		L"DBPROP is DBPROP_TBL_TEMPTABLE - S_OK")
	TEST_VARIATION(93, 		L"DBPROP is DBPROP_ABORTPRESERVE - S_OK")
	TEST_VARIATION(94, 		L"DBPROP is DBPROP_APPENDONLY - S_OK")
	TEST_VARIATION(95, 		L"DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(96, 		L"DBPROP is DBPROP_BOOKMARKS - S_OK")
	TEST_VARIATION(97, 		L"DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK")
	TEST_VARIATION(98, 		L"DBPROP is DBPROP_BOOKMARKTYPE - S_OK")
	TEST_VARIATION(99, 		L"DBPROP is DBPROP_CACHEDEFERRED - S_OK")
	TEST_VARIATION(100, 		L"DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK")
	TEST_VARIATION(101, 		L"DBPROP is DBPROP_CANHOLDROWS - S_OK")
	TEST_VARIATION(102, 		L"DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK")
	TEST_VARIATION(103, 		L"DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK")
	TEST_VARIATION(104, 		L"DBPROP is DBPROP_COLUMNRESTRICT - S_OK")
	TEST_VARIATION(105, 		L"DBPROP is DBPROP_COMMANDTIMEOUT - S_OK")
	TEST_VARIATION(106, 		L"DBPROP is DBPROP_COMMITPRESERVE - S_OK")
	TEST_VARIATION(107, 		L"DBPROP is DBPROP_DEFERRED - S_OK")
	TEST_VARIATION(108, 		L"DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(109, 		L"DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK")
	TEST_VARIATION(110, 		L"DBPROP is DBPROP_FINDCOMPAREOPS - S_OK")
	TEST_VARIATION(111, 		L"DBPROP is DBPROP_IMMOBILEROWS - S_OK")
	TEST_VARIATION(112, 		L"DBPROP is DBPROP_LITERALBOOKMARKS - S_OK")
	TEST_VARIATION(113, 		L"DBPROP is DBPROP_LITERALIDENTITY - S_OK")
	TEST_VARIATION(114, 		L"DBPROP is DBPROP_MAXOPENROWS - S_OK")
	TEST_VARIATION(115, 		L"DBPROP is DBPROP_MAXPENDINGROWS - S_OK")
	TEST_VARIATION(116, 		L"DBPROP is DBPROP_MAXROWS - S_OK")
	TEST_VARIATION(117, 		L"DBPROP is DBPROP_MAYWRITECOLUMN - S_OK")
	TEST_VARIATION(118, 		L"DBPROP is DBPROP_MEMORYUSAGE - S_OK")
	TEST_VARIATION(119, 		L"DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK")
	TEST_VARIATION(120, 		L"DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK")
	TEST_VARIATION(121, 		L"DBPROP is DBPROP_NOTIFYROWDELETE - S_OK")
	TEST_VARIATION(122, 		L"DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK")
	TEST_VARIATION(123, 		L"DBPROP is DBPROP_NOTIFYROWINSERT - S_OK")
	TEST_VARIATION(124, 		L"DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK")
	TEST_VARIATION(125, 		L"DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK")
	TEST_VARIATION(126, 		L"DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK")
	TEST_VARIATION(127, 		L"DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK")
	TEST_VARIATION(128, 		L"DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK")
	TEST_VARIATION(129, 		L"DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK")
	TEST_VARIATION(130, 		L"DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK")
	TEST_VARIATION(131, 		L"DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK")
	TEST_VARIATION(132, 		L"DBPROP is DBPROP_OTHERINSERT - S_OK")
	TEST_VARIATION(133, 		L"DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK")
	TEST_VARIATION(134, 		L"DBPROP is DBPROP_OWNINSERT - S_OK")
	TEST_VARIATION(135, 		L"DBPROP is DBPROP_OWNUPDATEDELETE - S_OK")
	TEST_VARIATION(136, 		L"DBPROP is DBPROP_QUICKRESTART - S_OK")
	TEST_VARIATION(137, 		L"DBPROP is DBPROP_REENTRANTEVENTS - S_OK")
	TEST_VARIATION(138, 		L"DBPROP is DBPROP_REMOVEDELETED - S_OK")
	TEST_VARIATION(139, 		L"DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK")
	TEST_VARIATION(140, 		L"DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK")
	TEST_VARIATION(141, 		L"DBPROP is DBPROP_ROWRESTRICT - S_OK")
	TEST_VARIATION(142, 		L"DBPROP is DBPROP_ROWSET_ASYNCH - S_OK")
	TEST_VARIATION(143, 		L"DBPROP is DBPROP_ROWTHREADMODEL - S_OK")
	TEST_VARIATION(144, 		L"DBPROP is DBPROP_SERVERCURSOR - S_OK")
	TEST_VARIATION(145, 		L"DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK")
	TEST_VARIATION(146, 		L"DBPROP is DBPROP_UPDATABILITY - S_OK")
	TEST_VARIATION(147, 		L"DBPROP is DBPROP_STRONGIDENTITY - S_OK")
	TEST_VARIATION(148, 		L"DBPROP is DBPROP_IAccessor - S_OK")
	TEST_VARIATION(149, 		L"DBPROP is DBPROP_IChapteredRowset - S_OK")
	TEST_VARIATION(150, 		L"DBPROP is DBPROP_IColumnsInfo - S_OK")
	TEST_VARIATION(151, 		L"DBPROP is DBPROP_IColumnsRowset - S_OK")
	TEST_VARIATION(152, 		L"DBPROP is DBPROP_IConnectionPointContainer - S_OK")
	TEST_VARIATION(153, 		L"DBPROP is DBPROP_IConvertType - S_OK")
	TEST_VARIATION(154, 		L"DBPROP is DBPROP_IDBAsynchStatus - S_OK")
	TEST_VARIATION(155, 		L"DBPROP is DBPROP_IRowset - S_OK")
	TEST_VARIATION(156, 		L"DBPROP is DBPROP_IRowsetChange - S_OK")
	TEST_VARIATION(157, 		L"DBPROP is DBPROP_IRowsetFind - S_OK")
	TEST_VARIATION(158, 		L"DBPROP is DBPROP_IRowsetIdentity - S_OK")
	TEST_VARIATION(159, 		L"DBPROP is DBPROP_IRowsetIndex - S_OK")
	TEST_VARIATION(160, 		L"DBPROP is DBPROP_IRowsetInfo - S_OK")
	TEST_VARIATION(161, 		L"DBPROP is DBPROP_IRowsetLocate - S_OK")
	TEST_VARIATION(162, 		L"DBPROP is DBPROP_IRowsetResynch - S_OK")
	TEST_VARIATION(163, 		L"DBPROP is DBPROP_IRowsetScroll - S_OK")
	TEST_VARIATION(164, 		L"DBPROP is DBPROP_IRowsetUpdate - S_OK")
	TEST_VARIATION(165, 		L"DBPROP is DBPROP_IRowsetView - S_OK")
	TEST_VARIATION(166, 		L"DBPROP is DBPROP_IViewChapter - S_OK")
	TEST_VARIATION(167, 		L"DBPROP is DBPROP_IViewFilter - S_OK")
	TEST_VARIATION(168, 		L"DBPROP is DBPROP_IViewRowset - S_OK")
	TEST_VARIATION(169, 		L"DBPROP is DBPROP_IViewSort - S_OK")
	TEST_VARIATION(170, 		L"DBPROP is DBPROP_ILockBytes - S_OK")
	TEST_VARIATION(171, 		L"DBPROP is DBPROP_ISequentialStream - S_OK")
	TEST_VARIATION(172, 		L"DBPROP is DBPROP_IStorage - S_OK")
	TEST_VARIATION(173, 		L"DBPROP is DBPROP_IStream - S_OK")
	TEST_VARIATION(174, 		L"DBPROP is DBPROP_ISupportErrorInfo - S_OK")
	TEST_VARIATION(175, 		L"DBPROP is DBPROP_ALTERCOLUMN - S_OK")
	TEST_VARIATION(176, 		L"DBPROP is DBPROP_CONNECTIONSTATUS - S_OK")
	TEST_VARIATION(177, 		L"DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK")
	TEST_VARIATION(178, 		L"DBPROP is DBPROP_PROVIDERMEMORY - S_OK")
	TEST_VARIATION(179, 		L"DBPROP is DBPROP_SERVERNAME - S_OK")
	TEST_VARIATION(180, 		L"DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK")
	TEST_VARIATION(181, 		L"DBPROP is DBPROP_RESETDATASOURCE - S_OK")
	TEST_VARIATION(182, 		L"DBPROP is DBPROP_INIT_CATALOG - S_OK")
	TEST_VARIATION(183, 		L"DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK")
	TEST_VARIATION(184, 		L"DBPROP is DBPROP_COLUMNLCID - S_OK")
	TEST_VARIATION(185, 		L"DBPROP is DBPROP_ACCESSORDER - S_OK")
	TEST_VARIATION(186, 		L"DBPROP is DBPROP_BOOKMARKINFO - S_OK")
	TEST_VARIATION(187, 		L"DBPROP is DBPROP_HIDDENCOLUMNS - S_OK")
	TEST_VARIATION(188, 		L"DBPROP is DBPROP_LOCKMODE - S_OK")
	TEST_VARIATION(189, 		L"DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK")
	TEST_VARIATION(190, 		L"DBPROP is DBPROP_ROW_BULKOPS - S_OK")
	TEST_VARIATION(191, 		L"DBPROP is DBPROP_SERVERDATAONINSERT - S_OK")
	TEST_VARIATION(192, 		L"DBPROP is DBPROP_STORAGEFLAGS - S_OK")
	TEST_VARIATION(193, 		L"DBPROP is DBPROP_UNIQUEROWS - S_OK")
	TEST_VARIATION(194, 		L"DBPROP is DBPROP_IMultipleResults - S_OK")
	TEST_VARIATION(195, 		L"DBPROP is DBPROP_IRowsetRefresh - S_OK")
	TEST_VARIATION(196, 		L"DBPROP is DBPROP_IParentRowset - S_OK")
	TEST_VARIATION(197, 		L"DBPROP is DBPROP_COL_INCREMENT - S_OK")
	TEST_VARIATION(198, 		L"DBPROP is DBPROP_COL_ISLONG - S_OK")
	TEST_VARIATION(199, 		L"DBPROP is DBPROP_COL_SEED - S_OK")
	TEST_VARIATION(200, 		L"DBPROP is DBPROP_COMSERVICES - S_OK")
	TEST_VARIATION(201, 		L"DBPROP is DBPROP_DATASOURCETYPE - S_OK")
	TEST_VARIATION(202, 		L"DBPROP is DBPROP_GENERATEURL - S_OK")
	TEST_VARIATION(203, 		L"DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK")
	TEST_VARIATION(204, 		L"DBPROP is DBPROP_INIT_BINDFLAGS - S_OK")
	TEST_VARIATION(205, 		L"DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK")
	TEST_VARIATION(206, 		L"DBPROP is DBPROP_INIT_LOCKOWNER - S_OK")
	TEST_VARIATION(207, 		L"DBPROP is DBPROP_CLIENTCURSOR - S_OK")
	TEST_VARIATION(208, 		L"DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK")
	TEST_VARIATION(209, 		L"DBPROP is DBPROP_IBindResource - S_OK")
	TEST_VARIATION(210, 		L"DBPROP is DBPROP_IColumnsInfo2 - S_OK")
	TEST_VARIATION(211, 		L"DBPROP is DBPROP_ICreateRow - S_OK")
	TEST_VARIATION(212, 		L"DBPROP is DBPROP_IGetRow - S_OK")
	TEST_VARIATION(213, 		L"DBPROP is DBPROP_IGetSession - S_OK")
	TEST_VARIATION(214, 		L"DBPROP is DBPROP_IGetSourceRow - S_OK")
	TEST_VARIATION(215, 		L"DBPROP is DBPROP_IRow - S_OK")
	TEST_VARIATION(216, 		L"DBPROP is DBPROP_IRowChange - S_OK")
	TEST_VARIATION(217, 		L"DBPROP is DBPROP_IRowSchemaChange - S_OK")
	TEST_VARIATION(218, 		L"DBPROP is DBPROP_IRowsetCurrentIndex - S_OK")
	TEST_VARIATION(219, 		L"DBPROP is DBPROP_IScopedOperations - S_OK")
	TEST_VARIATION(220, 		L"DBPROP is DBPROP_TABLESTATISTICS - S_OK")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCIDProperties_SetDBInitProperties)
//--------------------------------------------------------------------
// @class set DBInit supported Properties
//
class TCIDProperties_SetDBInitProperties : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();

	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_SetDBInitProperties,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();

	// {{ TCW_TESTVARS()
	// @cmember DBPROP is DBPROP_ACTIVESESSIONS - S_OK
	int Variation_1();
	// @cmember DBPROP is DBPROP_ASYNCTXNABORT - S_OK
	int Variation_2();
	// @cmember DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
	int Variation_3();
	// @cmember DBPROP is DBPROP_BYREFACCESSORS - S_OK
	int Variation_4();
	// @cmember DBPROP is DBPROP_CATALOGLOCATION - S_OK
	int Variation_5();
	// @cmember DBPROP is DBPROP_CATALOGTERM - S_OK
	int Variation_6();
	// @cmember DBPROP is DBPROP_CATALOGUSAGE - S_OK
	int Variation_7();
	// @cmember DBPROP is DBPROP_COLUMNDEFINITION - S_OK
	int Variation_8();
	// @cmember DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
	int Variation_9();
	// @cmember DBPROP is DBPROP_DATASOURCENAME - S_OK
	int Variation_10();
	// @cmember DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
	int Variation_11();
	// @cmember DBPROP is DBPROP_DBMSNAME - S_OK
	int Variation_12();
	// @cmember DBPROP is DBPROP_DBMSVER - S_OK
	int Variation_13();
	// @cmember DBPROP is DBPROP_DSOTHREADMODEL - S_OK
	int Variation_14();
	// @cmember DBPROP is DBPROP_GROUPBY - S_OK
	int Variation_15();
	// @cmember DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
	int Variation_16();
	// @cmember DBPROP is DBPROP_IDENTIFIERCASE - S_OK
	int Variation_17();
	// @cmember DBPROP is DBPROP_MAXINDEXSIZE - S_OK
	int Variation_18();
	// @cmember DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
	int Variation_19();
	// @cmember DBPROP is DBPROP_MAXORSINFILTER - S_OK
	int Variation_20();
	// @cmember DBPROP is DBPROP_MAXROWSIZE - S_OK
	int Variation_21();
	// @cmember DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
	int Variation_22();
	// @cmember DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
	int Variation_23();
	// @cmember DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
	int Variation_24();
	// @cmember DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
	int Variation_25();
	// @cmember DBPROP is DBPROP_MULTIPLERESULTS - S_OK
	int Variation_26();
	// @cmember DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
	int Variation_27();
	// @cmember DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
	int Variation_28();
	// @cmember DBPROP is DBPROP_NULLCOLLATION - S_OK
	int Variation_29();
	// @cmember DBPROP is DBPROP_OLEOBJECTS - S_OK
	int Variation_30();
	// @cmember DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
	int Variation_31();
	// @cmember DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
	int Variation_32();
	// @cmember DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
	int Variation_33();
	// @cmember DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
	int Variation_34();
	// @cmember DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
	int Variation_35();
	// @cmember DBPROP is DBPROP_PROCEDURETERM - S_OK
	int Variation_36();
	// @cmember DBPROP is DBPROP_PROVIDERNAME - S_OK
	int Variation_37();
	// @cmember DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
	int Variation_38();
	// @cmember DBPROP is DBPROP_PROVIDERVER - S_OK
	int Variation_39();
	// @cmember DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
	int Variation_40();
	// @cmember DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
	int Variation_41();
	// @cmember DBPROP is DBPROP_SCHEMATERM - S_OK
	int Variation_42();
	// @cmember DBPROP is DBPROP_SCHEMAUSAGE - S_OK
	int Variation_43();
	// @cmember DBPROP is DBPROP_SORTONINDEX - S_OK
	int Variation_44();
	// @cmember DBPROP is DBPROP_SQLSUPPORT - S_OK
	int Variation_45();
	// @cmember DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
	int Variation_46();
	// @cmember DBPROP is DBPROP_SUBQUERIES - S_OK
	int Variation_47();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
	int Variation_48();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
	int Variation_49();
	// @cmember DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
	int Variation_50();
	// @cmember DBPROP is DBPROP_TABLETERM - S_OK
	int Variation_51();
	// @cmember DBPROP is DBPROP_USERNAME - S_OK
	int Variation_52();
	// @cmember DBPROP is DBPROP_CURRENTCATALOG - S_OK
	int Variation_53();
	// @cmember DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
	int Variation_54();
	// @cmember DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
	int Variation_55();
	// @cmember DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
	int Variation_56();
	// @cmember DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
	int Variation_57();
	// @cmember DBPROP is DBPROP_AUTH_PASSWORD - S_OK
	int Variation_58();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
	int Variation_59();
	// @cmember DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
	int Variation_60();
	// @cmember DBPROP is DBPROP_AUTH_USERID - S_OK
	int Variation_61();
	// @cmember DBPROP is DBPROP_INIT_ASYNCH - S_OK
	int Variation_62();
	// @cmember DBPROP is DBPROP_INIT_DATASOURCE - S_OK
	int Variation_63();
	// @cmember DBPROP is DBPROP_INIT_HWND - S_OK
	int Variation_64();
	// @cmember DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
	int Variation_65();
	// @cmember DBPROP is DBPROP_INIT_LCID - S_OK
	int Variation_66();
	// @cmember DBPROP is DBPROP_INIT_LOCATION - S_OK
	int Variation_67();
	// @cmember DBPROP is DBPROP_INIT_MODE - S_OK
	int Variation_68();
	// @cmember DBPROP is DBPROP_INIT_PROMPT - S_OK
	int Variation_69();
	// @cmember DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
	int Variation_70();
	// @cmember DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
	int Variation_71();
	// @cmember DBPROP is DBPROP_INIT_TIMEOUT - S_OK
	int Variation_72();
	// @cmember DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
	int Variation_73();
	// @cmember DBPROP is DBPROP_COL_DEFAULT - S_OK
	int Variation_74();
	// @cmember DBPROP is DBPROP_COL_DESCRIPTION - S_OK
	int Variation_75();
	// @cmember DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
	int Variation_76();
	// @cmember DBPROP is DBPROP_COL_NULLABLE - S_OK
	int Variation_77();
	// @cmember DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
	int Variation_78();
	// @cmember DBPROP is DBPROP_COL_UNIQUE - S_OK
	int Variation_79();
	// @cmember DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
	int Variation_80();
	// @cmember DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
	int Variation_81();
	// @cmember DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
	int Variation_82();
	// @cmember DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
	int Variation_83();
	// @cmember DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
	int Variation_84();
	// @cmember DBPROP is DBPROP_INDEX_NULLS - S_OK
	int Variation_85();
	// @cmember DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
	int Variation_86();
	// @cmember DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
	int Variation_87();
	// @cmember DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
	int Variation_88();
	// @cmember DBPROP is DBPROP_INDEX_TYPE - S_OK
	int Variation_89();
	// @cmember DBPROP is DBPROP_INDEX_UNIQUE - S_OK
	int Variation_90();
	// @cmember DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
	int Variation_91();
	// @cmember DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
	int Variation_92();
	// @cmember DBPROP is DBPROP_ABORTPRESERVE - S_OK
	int Variation_93();
	// @cmember DBPROP is DBPROP_APPENDONLY - S_OK
	int Variation_94();
	// @cmember DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
	int Variation_95();
	// @cmember DBPROP is DBPROP_BOOKMARKS - S_OK
	int Variation_96();
	// @cmember DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
	int Variation_97();
	// @cmember DBPROP is DBPROP_BOOKMARKTYPE - S_OK
	int Variation_98();
	// @cmember DBPROP is DBPROP_CACHEDEFERRED - S_OK
	int Variation_99();
	// @cmember DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
	int Variation_100();
	// @cmember DBPROP is DBPROP_CANHOLDROWS - S_OK
	int Variation_101();
	// @cmember DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
	int Variation_102();
	// @cmember DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
	int Variation_103();
	// @cmember DBPROP is DBPROP_COLUMNRESTRICT - S_OK
	int Variation_104();
	// @cmember DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
	int Variation_105();
	// @cmember DBPROP is DBPROP_COMMITPRESERVE - S_OK
	int Variation_106();
	// @cmember DBPROP is DBPROP_DEFERRED - S_OK
	int Variation_107();
	// @cmember DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
	int Variation_108();
	// @cmember DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
	int Variation_109();
	// @cmember DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
	int Variation_110();
	// @cmember DBPROP is DBPROP_IMMOBILEROWS - S_OK
	int Variation_111();
	// @cmember DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
	int Variation_112();
	// @cmember DBPROP is DBPROP_LITERALIDENTITY - S_OK
	int Variation_113();
	// @cmember DBPROP is DBPROP_MAXOPENROWS - S_OK
	int Variation_114();
	// @cmember DBPROP is DBPROP_MAXPENDINGROWS - S_OK
	int Variation_115();
	// @cmember DBPROP is DBPROP_MAXROWS - S_OK
	int Variation_116();
	// @cmember DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
	int Variation_117();
	// @cmember DBPROP is DBPROP_MEMORYUSAGE - S_OK
	int Variation_118();
	// @cmember DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
	int Variation_119();
	// @cmember DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
	int Variation_120();
	// @cmember DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
	int Variation_121();
	// @cmember DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
	int Variation_122();
	// @cmember DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
	int Variation_123();
	// @cmember DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
	int Variation_124();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
	int Variation_125();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
	int Variation_126();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
	int Variation_127();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
	int Variation_128();
	// @cmember DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
	int Variation_129();
	// @cmember DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
	int Variation_130();
	// @cmember DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
	int Variation_131();
	// @cmember DBPROP is DBPROP_OTHERINSERT - S_OK
	int Variation_132();
	// @cmember DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
	int Variation_133();
	// @cmember DBPROP is DBPROP_OWNINSERT - S_OK
	int Variation_134();
	// @cmember DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
	int Variation_135();
	// @cmember DBPROP is DBPROP_QUICKRESTART - S_OK
	int Variation_136();
	// @cmember DBPROP is DBPROP_REENTRANTEVENTS - S_OK
	int Variation_137();
	// @cmember DBPROP is DBPROP_REMOVEDELETED - S_OK
	int Variation_138();
	// @cmember DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
	int Variation_139();
	// @cmember DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
	int Variation_140();
	// @cmember DBPROP is DBPROP_ROWRESTRICT - S_OK
	int Variation_141();
	// @cmember DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
	int Variation_142();
	// @cmember DBPROP is DBPROP_ROWTHREADMODEL - S_OK
	int Variation_143();
	// @cmember DBPROP is DBPROP_SERVERCURSOR - S_OK
	int Variation_144();
	// @cmember DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
	int Variation_145();
	// @cmember DBPROP is DBPROP_UPDATABILITY - S_OK
	int Variation_146();
	// @cmember DBPROP is DBPROP_STRONGIDENTITY - S_OK
	int Variation_147();
	// @cmember DBPROP is DBPROP_IAccessor - S_OK
	int Variation_148();
	// @cmember DBPROP is DBPROP_IChapteredRowset - S_OK
	int Variation_149();
	// @cmember DBPROP is DBPROP_IColumnsInfo - S_OK
	int Variation_150();
	// @cmember DBPROP is DBPROP_IColumnsRowset - S_OK
	int Variation_151();
	// @cmember DBPROP is DBPROP_IConnectionPointContainer - S_OK
	int Variation_152();
	// @cmember DBPROP is DBPROP_IConvertType - S_OK
	int Variation_153();
	// @cmember DBPROP is DBPROP_IDBAsynchStatus - S_OK
	int Variation_154();
	// @cmember DBPROP is DBPROP_IRowset - S_OK
	int Variation_155();
	// @cmember DBPROP is DBPROP_IRowsetChange - S_OK
	int Variation_156();
	// @cmember DBPROP is DBPROP_IRowsetFind - S_OK
	int Variation_157();
	// @cmember DBPROP is DBPROP_IRowsetIdentity - S_OK
	int Variation_158();
	// @cmember DBPROP is DBPROP_IRowsetIndex - S_OK
	int Variation_159();
	// @cmember DBPROP is DBPROP_IRowsetInfo - S_OK
	int Variation_160();
	// @cmember DBPROP is DBPROP_IRowsetLocate - S_OK
	int Variation_161();
	// @cmember DBPROP is DBPROP_IRowsetResynch - S_OK
	int Variation_162();
	// @cmember DBPROP is DBPROP_IRowsetScroll - S_OK
	int Variation_163();
	// @cmember DBPROP is DBPROP_IRowsetUpdate - S_OK
	int Variation_164();
	// @cmember DBPROP is DBPROP_IRowsetView - S_OK
	int Variation_165();
	// @cmember DBPROP is DBPROP_IViewChapter - S_OK
	int Variation_166();
	// @cmember DBPROP is DBPROP_IViewFilter - S_OK
	int Variation_167();
	// @cmember DBPROP is DBPROP_IViewRowset - S_OK
	int Variation_168();
	// @cmember DBPROP is DBPROP_IViewSort - S_OK
	int Variation_169();
	// @cmember DBPROP is DBPROP_ILockBytes - S_OK
	int Variation_170();
	// @cmember DBPROP is DBPROP_ISequentialStream - S_OK
	int Variation_171();
	// @cmember DBPROP is DBPROP_IStorage - S_OK
	int Variation_172();
	// @cmember DBPROP is DBPROP_IStream - S_OK
	int Variation_173();
	// @cmember DBPROP is DBPROP_ISupportErrorInfo - S_OK
	int Variation_174();
	// @cmember DBPROP is DBPROP_ALTERCOLUMN - S_OK
	int Variation_175();
	// @cmember DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
	int Variation_176();
	// @cmember DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
	int Variation_177();
	// @cmember DBPROP is DBPROP_PROVIDERMEMORY - S_OK
	int Variation_178();
	// @cmember DBPROP is DBPROP_SERVERNAME - S_OK
	int Variation_179();
	// @cmember DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
	int Variation_180();
	// @cmember DBPROP is DBPROP_RESETDATASOURCE - S_OK
	int Variation_181();
	// @cmember DBPROP is DBPROP_INIT_CATALOG - S_OK
	int Variation_182();
	// @cmember DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
	int Variation_183();
	// @cmember DBPROP is DBPROP_COLUMNLCID - S_OK
	int Variation_184();
	// @cmember DBPROP is DBPROP_ACCESSORDER - S_OK
	int Variation_185();
	// @cmember DBPROP is DBPROP_BOOKMARKINFO - S_OK
	int Variation_186();
	// @cmember DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
	int Variation_187();
	// @cmember DBPROP is DBPROP_LOCKMODE - S_OK
	int Variation_188();
	// @cmember DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
	int Variation_189();
	// @cmember DBPROP is DBPROP_ROW_BULKOPS - S_OK
	int Variation_190();
	// @cmember DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
	int Variation_191();
	// @cmember DBPROP is DBPROP_STORAGEFLAGS - S_OK
	int Variation_192();
	// @cmember DBPROP is DBPROP_UNIQUEROWS - S_OK
	int Variation_193();
	// @cmember DBPROP is DBPROP_IMultipleResults - S_OK
	int Variation_194();
	// @cmember DBPROP is DBPROP_IRowsetRefresh - S_OK
	int Variation_195();
	// @cmember DBPROP is DBPROP_IParentRowset - S_OK
	int Variation_196();
	// @cmember DBPROP is DBPROP_COL_INCREMENT - S_OK
	int Variation_197();
	// @cmember DBPROP is DBPROP_COL_ISLONG - S_OK
	int Variation_198();
	// @cmember DBPROP is DBPROP_COL_SEED - S_OK
	int Variation_199();
	// @cmember DBPROP is DBPROP_COMSERVICES - S_OK
	int Variation_200();
	// @cmember DBPROP is DBPROP_DATASOURCETYPE - S_OK
	int Variation_201();
	// @cmember DBPROP is DBPROP_GENERATEURL - S_OK
	int Variation_202();
	// @cmember DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
	int Variation_203();
	// @cmember DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
	int Variation_204();
	// @cmember DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
	int Variation_205();
	// @cmember DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
	int Variation_206();
	// @cmember DBPROP is DBPROP_CLIENTCURSOR - S_OK
	int Variation_207();
	// @cmember DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
	int Variation_208();
	// @cmember DBPROP is DBPROP_IBindResource - S_OK
	int Variation_209();
	// @cmember DBPROP is DBPROP_IColumnsInfo2 - S_OK
	int Variation_210();
	// @cmember DBPROP is DBPROP_ICreateRow - S_OK
	int Variation_211();
	// @cmember DBPROP is DBPROP_IGetRow - S_OK
	int Variation_212();
	// @cmember DBPROP is DBPROP_IGetSession - S_OK
	int Variation_213();
	// @cmember DBPROP is DBPROP_IGetSourceRow - S_OK
	int Variation_214();
	// @cmember DBPROP is DBPROP_IRow - S_OK
	int Variation_215();
	// @cmember DBPROP is DBPROP_IRowChange - S_OK
	int Variation_216();
	// @cmember DBPROP is DBPROP_IRowSchemaChange - S_OK
	int Variation_217();
	// @cmember DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
	int Variation_218();
	// @cmember DBPROP is DBPROP_IScopedOperations - S_OK
	int Variation_219();
	// @cmember DBPROP is DBPROP_TABLESTATISTICS - S_OK
	int Variation_220();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_SetDBInitProperties)
#define THE_CLASS TCIDProperties_SetDBInitProperties
BEG_TEST_CASE(TCIDProperties_SetDBInitProperties, TCIDProperties, L"set DBInit supported Properties")
	TEST_VARIATION(1, 		L"DBPROP is DBPROP_ACTIVESESSIONS - S_OK")
	TEST_VARIATION(2, 		L"DBPROP is DBPROP_ASYNCTXNABORT - S_OK")
	TEST_VARIATION(3, 		L"DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK")
	TEST_VARIATION(4, 		L"DBPROP is DBPROP_BYREFACCESSORS - S_OK")
	TEST_VARIATION(5, 		L"DBPROP is DBPROP_CATALOGLOCATION - S_OK")
	TEST_VARIATION(6, 		L"DBPROP is DBPROP_CATALOGTERM - S_OK")
	TEST_VARIATION(7, 		L"DBPROP is DBPROP_CATALOGUSAGE - S_OK")
	TEST_VARIATION(8, 		L"DBPROP is DBPROP_COLUMNDEFINITION - S_OK")
	TEST_VARIATION(9, 		L"DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK")
	TEST_VARIATION(10, 		L"DBPROP is DBPROP_DATASOURCENAME - S_OK")
	TEST_VARIATION(11, 		L"DBPROP is DBPROP_DATASOURCEREADONLY - S_OK")
	TEST_VARIATION(12, 		L"DBPROP is DBPROP_DBMSNAME - S_OK")
	TEST_VARIATION(13, 		L"DBPROP is DBPROP_DBMSVER - S_OK")
	TEST_VARIATION(14, 		L"DBPROP is DBPROP_DSOTHREADMODEL - S_OK")
	TEST_VARIATION(15, 		L"DBPROP is DBPROP_GROUPBY - S_OK")
	TEST_VARIATION(16, 		L"DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK")
	TEST_VARIATION(17, 		L"DBPROP is DBPROP_IDENTIFIERCASE - S_OK")
	TEST_VARIATION(18, 		L"DBPROP is DBPROP_MAXINDEXSIZE - S_OK")
	TEST_VARIATION(19, 		L"DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK")
	TEST_VARIATION(20, 		L"DBPROP is DBPROP_MAXORSINFILTER - S_OK")
	TEST_VARIATION(21, 		L"DBPROP is DBPROP_MAXROWSIZE - S_OK")
	TEST_VARIATION(22, 		L"DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK")
	TEST_VARIATION(23, 		L"DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK")
	TEST_VARIATION(24, 		L"DBPROP is DBPROP_MAXTABLESINSELECT - S_OK")
	TEST_VARIATION(25, 		L"DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK")
	TEST_VARIATION(26, 		L"DBPROP is DBPROP_MULTIPLERESULTS - S_OK")
	TEST_VARIATION(27, 		L"DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK")
	TEST_VARIATION(28, 		L"DBPROP is DBPROP_MULTITABLEUPDATE - S_OK")
	TEST_VARIATION(29, 		L"DBPROP is DBPROP_NULLCOLLATION - S_OK")
	TEST_VARIATION(30, 		L"DBPROP is DBPROP_OLEOBJECTS - S_OK")
	TEST_VARIATION(31, 		L"DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK")
	TEST_VARIATION(32, 		L"DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK")
	TEST_VARIATION(33, 		L"DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK")
	TEST_VARIATION(34, 		L"DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK")
	TEST_VARIATION(35, 		L"DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK")
	TEST_VARIATION(36, 		L"DBPROP is DBPROP_PROCEDURETERM - S_OK")
	TEST_VARIATION(37, 		L"DBPROP is DBPROP_PROVIDERNAME - S_OK")
	TEST_VARIATION(38, 		L"DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK")
	TEST_VARIATION(39, 		L"DBPROP is DBPROP_PROVIDERVER - S_OK")
	TEST_VARIATION(40, 		L"DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK")
	TEST_VARIATION(41, 		L"DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK")
	TEST_VARIATION(42, 		L"DBPROP is DBPROP_SCHEMATERM - S_OK")
	TEST_VARIATION(43, 		L"DBPROP is DBPROP_SCHEMAUSAGE - S_OK")
	TEST_VARIATION(44, 		L"DBPROP is DBPROP_SORTONINDEX - S_OK")
	TEST_VARIATION(45, 		L"DBPROP is DBPROP_SQLSUPPORT - S_OK")
	TEST_VARIATION(46, 		L"DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK")
	TEST_VARIATION(47, 		L"DBPROP is DBPROP_SUBQUERIES - S_OK")
	TEST_VARIATION(48, 		L"DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK")
	TEST_VARIATION(49, 		L"DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK")
	TEST_VARIATION(50, 		L"DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK")
	TEST_VARIATION(51, 		L"DBPROP is DBPROP_TABLETERM - S_OK")
	TEST_VARIATION(52, 		L"DBPROP is DBPROP_USERNAME - S_OK")
	TEST_VARIATION(53, 		L"DBPROP is DBPROP_CURRENTCATALOG - S_OK")
	TEST_VARIATION(54, 		L"DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK")
	TEST_VARIATION(55, 		L"DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK")
	TEST_VARIATION(56, 		L"DBPROP is DBPROP_AUTH_INTEGRATED - S_OK")
	TEST_VARIATION(57, 		L"DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK")
	TEST_VARIATION(58, 		L"DBPROP is DBPROP_AUTH_PASSWORD - S_OK")
	TEST_VARIATION(59, 		L"DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK")
	TEST_VARIATION(60, 		L"DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK")
	TEST_VARIATION(61, 		L"DBPROP is DBPROP_AUTH_USERID - S_OK")
	TEST_VARIATION(62, 		L"DBPROP is DBPROP_INIT_ASYNCH - S_OK")
	TEST_VARIATION(63, 		L"DBPROP is DBPROP_INIT_DATASOURCE - S_OK")
	TEST_VARIATION(64, 		L"DBPROP is DBPROP_INIT_HWND - S_OK")
	TEST_VARIATION(65, 		L"DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK")
	TEST_VARIATION(66, 		L"DBPROP is DBPROP_INIT_LCID - S_OK")
	TEST_VARIATION(67, 		L"DBPROP is DBPROP_INIT_LOCATION - S_OK")
	TEST_VARIATION(68, 		L"DBPROP is DBPROP_INIT_MODE - S_OK")
	TEST_VARIATION(69, 		L"DBPROP is DBPROP_INIT_PROMPT - S_OK")
	TEST_VARIATION(70, 		L"DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK")
	TEST_VARIATION(71, 		L"DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK")
	TEST_VARIATION(72, 		L"DBPROP is DBPROP_INIT_TIMEOUT - S_OK")
	TEST_VARIATION(73, 		L"DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK")
	TEST_VARIATION(74, 		L"DBPROP is DBPROP_COL_DEFAULT - S_OK")
	TEST_VARIATION(75, 		L"DBPROP is DBPROP_COL_DESCRIPTION - S_OK")
	TEST_VARIATION(76, 		L"DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK")
	TEST_VARIATION(77, 		L"DBPROP is DBPROP_COL_NULLABLE - S_OK")
	TEST_VARIATION(78, 		L"DBPROP is DBPROP_COL_PRIMARYKEY - S_OK")
	TEST_VARIATION(79, 		L"DBPROP is DBPROP_COL_UNIQUE - S_OK")
	TEST_VARIATION(80, 		L"DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK")
	TEST_VARIATION(81, 		L"DBPROP is DBPROP_INDEX_CLUSTERED - S_OK")
	TEST_VARIATION(82, 		L"DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK")
	TEST_VARIATION(83, 		L"DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK")
	TEST_VARIATION(84, 		L"DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK")
	TEST_VARIATION(85, 		L"DBPROP is DBPROP_INDEX_NULLS - S_OK")
	TEST_VARIATION(86, 		L"DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK")
	TEST_VARIATION(87, 		L"DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK")
	TEST_VARIATION(88, 		L"DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK")
	TEST_VARIATION(89, 		L"DBPROP is DBPROP_INDEX_TYPE - S_OK")
	TEST_VARIATION(90, 		L"DBPROP is DBPROP_INDEX_UNIQUE - S_OK")
	TEST_VARIATION(91, 		L"DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK")
	TEST_VARIATION(92, 		L"DBPROP is DBPROP_TBL_TEMPTABLE - S_OK")
	TEST_VARIATION(93, 		L"DBPROP is DBPROP_ABORTPRESERVE - S_OK")
	TEST_VARIATION(94, 		L"DBPROP is DBPROP_APPENDONLY - S_OK")
	TEST_VARIATION(95, 		L"DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(96, 		L"DBPROP is DBPROP_BOOKMARKS - S_OK")
	TEST_VARIATION(97, 		L"DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK")
	TEST_VARIATION(98, 		L"DBPROP is DBPROP_BOOKMARKTYPE - S_OK")
	TEST_VARIATION(99, 		L"DBPROP is DBPROP_CACHEDEFERRED - S_OK")
	TEST_VARIATION(100, 		L"DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK")
	TEST_VARIATION(101, 		L"DBPROP is DBPROP_CANHOLDROWS - S_OK")
	TEST_VARIATION(102, 		L"DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK")
	TEST_VARIATION(103, 		L"DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK")
	TEST_VARIATION(104, 		L"DBPROP is DBPROP_COLUMNRESTRICT - S_OK")
	TEST_VARIATION(105, 		L"DBPROP is DBPROP_COMMANDTIMEOUT - S_OK")
	TEST_VARIATION(106, 		L"DBPROP is DBPROP_COMMITPRESERVE - S_OK")
	TEST_VARIATION(107, 		L"DBPROP is DBPROP_DEFERRED - S_OK")
	TEST_VARIATION(108, 		L"DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK")
	TEST_VARIATION(109, 		L"DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK")
	TEST_VARIATION(110, 		L"DBPROP is DBPROP_FINDCOMPAREOPS - S_OK")
	TEST_VARIATION(111, 		L"DBPROP is DBPROP_IMMOBILEROWS - S_OK")
	TEST_VARIATION(112, 		L"DBPROP is DBPROP_LITERALBOOKMARKS - S_OK")
	TEST_VARIATION(113, 		L"DBPROP is DBPROP_LITERALIDENTITY - S_OK")
	TEST_VARIATION(114, 		L"DBPROP is DBPROP_MAXOPENROWS - S_OK")
	TEST_VARIATION(115, 		L"DBPROP is DBPROP_MAXPENDINGROWS - S_OK")
	TEST_VARIATION(116, 		L"DBPROP is DBPROP_MAXROWS - S_OK")
	TEST_VARIATION(117, 		L"DBPROP is DBPROP_MAYWRITECOLUMN - S_OK")
	TEST_VARIATION(118, 		L"DBPROP is DBPROP_MEMORYUSAGE - S_OK")
	TEST_VARIATION(119, 		L"DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK")
	TEST_VARIATION(120, 		L"DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK")
	TEST_VARIATION(121, 		L"DBPROP is DBPROP_NOTIFYROWDELETE - S_OK")
	TEST_VARIATION(122, 		L"DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK")
	TEST_VARIATION(123, 		L"DBPROP is DBPROP_NOTIFYROWINSERT - S_OK")
	TEST_VARIATION(124, 		L"DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK")
	TEST_VARIATION(125, 		L"DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK")
	TEST_VARIATION(126, 		L"DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK")
	TEST_VARIATION(127, 		L"DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK")
	TEST_VARIATION(128, 		L"DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK")
	TEST_VARIATION(129, 		L"DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK")
	TEST_VARIATION(130, 		L"DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK")
	TEST_VARIATION(131, 		L"DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK")
	TEST_VARIATION(132, 		L"DBPROP is DBPROP_OTHERINSERT - S_OK")
	TEST_VARIATION(133, 		L"DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK")
	TEST_VARIATION(134, 		L"DBPROP is DBPROP_OWNINSERT - S_OK")
	TEST_VARIATION(135, 		L"DBPROP is DBPROP_OWNUPDATEDELETE - S_OK")
	TEST_VARIATION(136, 		L"DBPROP is DBPROP_QUICKRESTART - S_OK")
	TEST_VARIATION(137, 		L"DBPROP is DBPROP_REENTRANTEVENTS - S_OK")
	TEST_VARIATION(138, 		L"DBPROP is DBPROP_REMOVEDELETED - S_OK")
	TEST_VARIATION(139, 		L"DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK")
	TEST_VARIATION(140, 		L"DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK")
	TEST_VARIATION(141, 		L"DBPROP is DBPROP_ROWRESTRICT - S_OK")
	TEST_VARIATION(142, 		L"DBPROP is DBPROP_ROWSET_ASYNCH - S_OK")
	TEST_VARIATION(143, 		L"DBPROP is DBPROP_ROWTHREADMODEL - S_OK")
	TEST_VARIATION(144, 		L"DBPROP is DBPROP_SERVERCURSOR - S_OK")
	TEST_VARIATION(145, 		L"DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK")
	TEST_VARIATION(146, 		L"DBPROP is DBPROP_UPDATABILITY - S_OK")
	TEST_VARIATION(147, 		L"DBPROP is DBPROP_STRONGIDENTITY - S_OK")
	TEST_VARIATION(148, 		L"DBPROP is DBPROP_IAccessor - S_OK")
	TEST_VARIATION(149, 		L"DBPROP is DBPROP_IChapteredRowset - S_OK")
	TEST_VARIATION(150, 		L"DBPROP is DBPROP_IColumnsInfo - S_OK")
	TEST_VARIATION(151, 		L"DBPROP is DBPROP_IColumnsRowset - S_OK")
	TEST_VARIATION(152, 		L"DBPROP is DBPROP_IConnectionPointContainer - S_OK")
	TEST_VARIATION(153, 		L"DBPROP is DBPROP_IConvertType - S_OK")
	TEST_VARIATION(154, 		L"DBPROP is DBPROP_IDBAsynchStatus - S_OK")
	TEST_VARIATION(155, 		L"DBPROP is DBPROP_IRowset - S_OK")
	TEST_VARIATION(156, 		L"DBPROP is DBPROP_IRowsetChange - S_OK")
	TEST_VARIATION(157, 		L"DBPROP is DBPROP_IRowsetFind - S_OK")
	TEST_VARIATION(158, 		L"DBPROP is DBPROP_IRowsetIdentity - S_OK")
	TEST_VARIATION(159, 		L"DBPROP is DBPROP_IRowsetIndex - S_OK")
	TEST_VARIATION(160, 		L"DBPROP is DBPROP_IRowsetInfo - S_OK")
	TEST_VARIATION(161, 		L"DBPROP is DBPROP_IRowsetLocate - S_OK")
	TEST_VARIATION(162, 		L"DBPROP is DBPROP_IRowsetResynch - S_OK")
	TEST_VARIATION(163, 		L"DBPROP is DBPROP_IRowsetScroll - S_OK")
	TEST_VARIATION(164, 		L"DBPROP is DBPROP_IRowsetUpdate - S_OK")
	TEST_VARIATION(165, 		L"DBPROP is DBPROP_IRowsetView - S_OK")
	TEST_VARIATION(166, 		L"DBPROP is DBPROP_IViewChapter - S_OK")
	TEST_VARIATION(167, 		L"DBPROP is DBPROP_IViewFilter - S_OK")
	TEST_VARIATION(168, 		L"DBPROP is DBPROP_IViewRowset - S_OK")
	TEST_VARIATION(169, 		L"DBPROP is DBPROP_IViewSort - S_OK")
	TEST_VARIATION(170, 		L"DBPROP is DBPROP_ILockBytes - S_OK")
	TEST_VARIATION(171, 		L"DBPROP is DBPROP_ISequentialStream - S_OK")
	TEST_VARIATION(172, 		L"DBPROP is DBPROP_IStorage - S_OK")
	TEST_VARIATION(173, 		L"DBPROP is DBPROP_IStream - S_OK")
	TEST_VARIATION(174, 		L"DBPROP is DBPROP_ISupportErrorInfo - S_OK")
	TEST_VARIATION(175, 		L"DBPROP is DBPROP_ALTERCOLUMN - S_OK")
	TEST_VARIATION(176, 		L"DBPROP is DBPROP_CONNECTIONSTATUS - S_OK")
	TEST_VARIATION(177, 		L"DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK")
	TEST_VARIATION(178, 		L"DBPROP is DBPROP_PROVIDERMEMORY - S_OK")
	TEST_VARIATION(179, 		L"DBPROP is DBPROP_SERVERNAME - S_OK")
	TEST_VARIATION(180, 		L"DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK")
	TEST_VARIATION(181, 		L"DBPROP is DBPROP_RESETDATASOURCE - S_OK")
	TEST_VARIATION(182, 		L"DBPROP is DBPROP_INIT_CATALOG - S_OK")
	TEST_VARIATION(183, 		L"DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK")
	TEST_VARIATION(184, 		L"DBPROP is DBPROP_COLUMNLCID - S_OK")
	TEST_VARIATION(185, 		L"DBPROP is DBPROP_ACCESSORDER - S_OK")
	TEST_VARIATION(186, 		L"DBPROP is DBPROP_BOOKMARKINFO - S_OK")
	TEST_VARIATION(187, 		L"DBPROP is DBPROP_HIDDENCOLUMNS - S_OK")
	TEST_VARIATION(188, 		L"DBPROP is DBPROP_LOCKMODE - S_OK")
	TEST_VARIATION(189, 		L"DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK")
	TEST_VARIATION(190, 		L"DBPROP is DBPROP_ROW_BULKOPS - S_OK")
	TEST_VARIATION(191, 		L"DBPROP is DBPROP_SERVERDATAONINSERT - S_OK")
	TEST_VARIATION(192, 		L"DBPROP is DBPROP_STORAGEFLAGS - S_OK")
	TEST_VARIATION(193, 		L"DBPROP is DBPROP_UNIQUEROWS - S_OK")
	TEST_VARIATION(194, 		L"DBPROP is DBPROP_IMultipleResults - S_OK")
	TEST_VARIATION(195, 		L"DBPROP is DBPROP_IRowsetRefresh - S_OK")
	TEST_VARIATION(196, 		L"DBPROP is DBPROP_IParentRowset - S_OK")
	TEST_VARIATION(197, 		L"DBPROP is DBPROP_COL_INCREMENT - S_OK")
	TEST_VARIATION(198, 		L"DBPROP is DBPROP_COL_ISLONG - S_OK")
	TEST_VARIATION(199, 		L"DBPROP is DBPROP_COL_SEED - S_OK")
	TEST_VARIATION(200, 		L"DBPROP is DBPROP_COMSERVICES - S_OK")
	TEST_VARIATION(201, 		L"DBPROP is DBPROP_DATASOURCETYPE - S_OK")
	TEST_VARIATION(202, 		L"DBPROP is DBPROP_GENERATEURL - S_OK")
	TEST_VARIATION(203, 		L"DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK")
	TEST_VARIATION(204, 		L"DBPROP is DBPROP_INIT_BINDFLAGS - S_OK")
	TEST_VARIATION(205, 		L"DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK")
	TEST_VARIATION(206, 		L"DBPROP is DBPROP_INIT_LOCKOWNER - S_OK")
	TEST_VARIATION(207, 		L"DBPROP is DBPROP_CLIENTCURSOR - S_OK")
	TEST_VARIATION(208, 		L"DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK")
	TEST_VARIATION(209, 		L"DBPROP is DBPROP_IBindResource - S_OK")
	TEST_VARIATION(210, 		L"DBPROP is DBPROP_IColumnsInfo2 - S_OK")
	TEST_VARIATION(211, 		L"DBPROP is DBPROP_ICreateRow - S_OK")
	TEST_VARIATION(212, 		L"DBPROP is DBPROP_IGetRow - S_OK")
	TEST_VARIATION(213, 		L"DBPROP is DBPROP_IGetSession - S_OK")
	TEST_VARIATION(214, 		L"DBPROP is DBPROP_IGetSourceRow - S_OK")
	TEST_VARIATION(215, 		L"DBPROP is DBPROP_IRow - S_OK")
	TEST_VARIATION(216, 		L"DBPROP is DBPROP_IRowChange - S_OK")
	TEST_VARIATION(217, 		L"DBPROP is DBPROP_IRowSchemaChange - S_OK")
	TEST_VARIATION(218, 		L"DBPROP is DBPROP_IRowsetCurrentIndex - S_OK")
	TEST_VARIATION(219, 		L"DBPROP is DBPROP_IScopedOperations - S_OK")
	TEST_VARIATION(220, 		L"DBPROP is DBPROP_TABLESTATISTICS - S_OK")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// {{ TCW_TEST_CASE_MAP(TCExtendedErrors)
//--------------------------------------------------------------------
// @class Extended Errors
//
class TCExtendedErrors : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();

public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCExtendedErrors,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember Valid GetPropertyInfo call with previous error object existing.
	int Variation_1();
	// @cmember DB_E_ERRORSOCCURRED GetPropertyInfo call with previous error object existing.
	int Variation_2();
	// @cmember E_INVALIDARG GetPropertyInfo call with previous error object existing.
	int Variation_3();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCExtendedErrors)
#define THE_CLASS TCExtendedErrors
BEG_TEST_CASE(TCExtendedErrors, TCIDProperties, L"Extended Errors")
	TEST_VARIATION(1, 		L"Valid GetPropertyInfo call with previous error object existing.")
	TEST_VARIATION(2, 		L"DB_E_ERRORSOCCURRED GetPropertyInfo call with previous error object existing.")
	TEST_VARIATION(3, 		L"E_INVALIDARG GetPropertyInfo call with previous error object existing.")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END

// {{ TCW_TEST_CASE_MAP(TCIDProperties_GetProperties)
//--------------------------------------------------------------------
// @class IDBProperties::GetProperties
//
class TCIDProperties_GetProperties : public TCIDProperties { 
private:
	// @cmember Static array of variations
	DECLARE_TEST_CASE_DATA();
	
public:
	// {{ TCW_DECLARE_FUNCS
	// @cmember Execution Routine
	DECLARE_TEST_CASE_FUNCS(TCIDProperties_GetProperties,TCIDProperties);
	// }} TCW_DECLARE_FUNCS_END
 
	// @cmember Initialization Routine
	virtual BOOL Init();
	// @cmember Termination Routine
	virtual BOOL Terminate();
	
	// {{ TCW_TESTVARS()
	// @cmember Multiple property sets, no property sets supported or settable
	int Variation_1();
	int	Variation_2();
	// }} TCW_TESTVARS_END
};

// {{ TCW_TESTCASE(TCIDProperties_SetPropertiesBulk)
#define THE_CLASS TCIDProperties_GetProperties
BEG_TEST_CASE(TCIDProperties_GetProperties, TCIDProperties, L"IDBProperties::GetProperties")
	TEST_VARIATION(1, 		L"Oracle: DBPROP_PROVIDERNAME value check")
	TEST_VARIATION(2, 		L"Multiple threads calling IDBProperties::GetProperties()")
END_TEST_CASE()
#undef THE_CLASS
// }} TCW_TESTCASE_END
// }} TCW_TEST_CASE_MAP_END


// }} END_DECLARE_TEST_CASES()

// {{ TCW_TESTMODULE(ThisModule)
TEST_MODULE(8, ThisModule, gwszModuleDescrip)
	TEST_CASE(1, TCIDProperties_GetPropInfo)
	TEST_CASE(2, TCIDProperties_Parameters)
	TEST_CASE(3, TCIDProperties_GetPropertyInfoBulk)
	TEST_CASE(4, TCIDProperties_SetPropertiesBulk)
	TEST_CASE(5, TCIDProperties_SetProperties)
	TEST_CASE(6, TCIDProperties_SetDBInitProperties)
	TEST_CASE(7, TCExtendedErrors)
	TEST_CASE(8, TCIDProperties_GetProperties)
END_TEST_MODULE()
// }} TCW_TESTMODULE_END


// {{ TCW_TC_PROTOTYPE(TCIDProperties_GetPropInfo)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_GetPropInfo - IDBProperties::GetPropInfo
//|	Created:		08/06/95
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_GetPropInfo::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
	   TESTC(VerifyInterface(m_pThisTestModule->m_pIUnknown, IID_IDBProperties, 
							DATASOURCE_INTERFACE, (IUnknown **)&m_pIDBProperties));

	   TESTC_(GetModInfo()->CreateProvider(NULL,
						IID_IDBProperties,(IUnknown**)&m_pIDBPropUninit), S_OK);

	   m_cPropertyIDSets=1;
	   m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
	   m_rgPropertyIDSets->cPropertyIDs=1;
	   m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

		//Get the default values
	   if((!g_fInitGetPropInfoDefault) && (!COMPARE(InitGetPropInfoDefault(),TRUE)))
		   return FALSE;

	   g_fInitGetPropInfoDefault=TRUE;
		return TRUE;

	}

CLEANUP:

	return FALSE;
}


BOOL TCIDProperties_GetProperties::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		//Get the default values
		if(!g_fInitGetPropInfoDefault)
		{
			if(COMPARE(InitGetPropInfoDefault(),TRUE))
				g_fInitGetPropInfoDefault=TRUE;
			else
				return FALSE;
		}

		//Get the default values if we have not done it already
		if(!g_fInitGetPropDefault)
		{
			if(COMPARE(InitGetPropDefault(),TRUE))
				g_fInitGetPropDefault = TRUE;
			else
				return FALSE;
		}

		return TRUE;
	}
	return FALSE;
}


BOOL TCIDProperties_GetProperties::Terminate()
{
	// Release the Malloc Pointer
	SAFE_RELEASE(m_pIDBProperties);

	return (TCIDProperties::Terminate());
}


int TCIDProperties_GetProperties::Variation_1() {

	TBEGIN

	IDBInitialize	*pIDBInitialize = NULL;
	WCHAR			*pwszName		= NULL,
					*pwszFriendlyName = NULL;
	CLSID	clsidMSDAORA;

	TESTC_PROVIDER(CLSIDFromProgID(L"MSDAORA", &clsidMSDAORA) == S_OK);
	TESTC_PROVIDER(clsidMSDAORA == PROVIDER_CLSID);


	// Get IDBInitialize interface
	TESTC(VerifyInterface((IUnknown *)m_pThisTestModule->m_pIUnknown, IID_IDBInitialize, DATASOURCE_INTERFACE, (IUnknown**)&pIDBInitialize));

	// Now get the property
	TESTC(GetProperty(DBPROP_PROVIDERNAME, DBPROPSET_DATASOURCEINFO, pIDBInitialize, &pwszName));
	TESTC(GetProperty(DBPROP_PROVIDERFRIENDLYNAME, DBPROPSET_DATASOURCEINFO, pIDBInitialize, &pwszFriendlyName));

	TESTC(!wcscmp(pwszName, L"MSDAORA.DLL"));
	TESTC(!wcscmp(pwszFriendlyName, L"Microsoft OLE DB Provider for Oracle"));

CLEANUP:

	SAFE_RELEASE(pIDBInitialize);
	PROVIDER_FREE(pwszName);
	PROVIDER_FREE(pwszFriendlyName);

	TRETURN
}

HANDLE			hEvent			=	INVALID_HANDLE_VALUE;
volatile DWORD	dwThreadCount	=	0;

DWORD	AVCheckThread(LPVOID pParam) {
	IDBProperties			*pIDBProperties			=	NULL;
	HRESULT					hr						=	E_FAIL;
	ULONG					cPropSets				=	0;
	DBPROPSET				*rgPropSets				=	NULL;
	DBCOUNTITEM				i;
	IDBCreateCommand		*pIDBCreateCommand		=	(IDBCreateCommand*) pParam;
	ICommand				*pICommand				=	NULL;
	IGetDataSource			*pIGetDataSource		=	NULL;

	IMalloc* pIMalloc			    = NULL;

	// Get COM allocator.
	hr = CoGetMalloc( MEMCTX_TASK, &pIMalloc );

	TESTC_(pIDBCreateCommand->CreateCommand( NULL, IID_ICommand, (IUnknown**) &pICommand ), S_OK);
	TESTC_(pICommand->GetDBSession( IID_IGetDataSource, (IUnknown**)&pIGetDataSource ), S_OK);
	TESTC_(pIGetDataSource->GetDataSource( IID_IDBProperties, (IUnknown**) &pIDBProperties ), S_OK);

	// Synchronize
	dwThreadCount++;
	WaitForSingleObject(hEvent, INFINITE);

	for(i=0;i<100;i++) {
		TESTC_(hr = pIDBProperties->GetProperties(0, NULL, &cPropSets, &rgPropSets), S_OK);
		CHECK(cPropSets >0 && rgPropSets != NULL, true);
		FreeProperties(&cPropSets, &rgPropSets);
	}
CLEANUP:
	FreeProperties(&cPropSets, &rgPropSets);
	SAFE_RELEASE(pIDBProperties);
	SAFE_RELEASE(pIGetDataSource);
	SAFE_RELEASE(pICommand);

	return hr;
}

int TCIDProperties_GetProperties::Variation_2() {
	TBEGIN
	HANDLE				hThread[63];
	DWORD				dwThreadID[63];
	DBCOUNTITEM			i;
	DWORD				dwExitCode;
	IDataInitialize		*pIDataInitialize		=	NULL;
	IDBInitialize		*pIDBInitialize			=	NULL;
	IDBCreateSession	*pIDBCreateSession		=	NULL;
	IDBCreateCommand	*pIDBCreateCommand		=	NULL;
	WCHAR				*pwszInitString			=	NULL,
						*pwszProvider			=	NULL;
	hEvent			=	INVALID_HANDLE_VALUE;
	dwThreadCount	=	0;

	hEvent	=	CreateSemaphore(NULL, 0, 63, NULL);
	TESTC(hEvent != INVALID_HANDLE_VALUE);

/*	TESTC_(CoCreateInstance(CLSID_MSDAINITIALIZE, NULL, CLSCTX_INPROC_SERVER, IID_IDataInitialize,
		(void**)&pIDataInitialize), S_OK);

	TESTC_(ProgIDFromCLSID(PROVIDER_CLSID, &pwszProvider), S_OK);
	pwszInitString	=	(WCHAR*) PROVIDER_ALLOC(
					(wcslen(GetModInfo()->GetInitString()) + 1024) * sizeof(WCHAR));
	swprintf(pwszInitString, L"Provider=%s; %s", pwszProvider, GetModInfo()->GetInitString());

	TESTC_(pIDataInitialize->GetDataSource(NULL, CLSCTX_INPROC_SERVER, 
		pwszInitString,
		IID_IDBInitialize, (IUnknown**)&pIDBInitialize), S_OK);
	TESTC_(pIDBInitialize->Initialize(), S_OK);
*/
	TESTC_(GetModInfo()->CreateProvider(NULL, IID_IDBInitialize, (IUnknown**) &pIDBInitialize), S_OK);
	TESTC_(GetModInfo()->InitializeDataSource(pIDBInitialize, CREATEDSO_SETPROPERTIES | CREATEDSO_INITIALIZE), S_OK);

	TESTC_(pIDBInitialize->QueryInterface(IID_IDBCreateSession, (void**)&pIDBCreateSession), S_OK);
	TESTC_(pIDBCreateSession->CreateSession(NULL, IID_IDBCreateCommand, (IUnknown**)&pIDBCreateCommand), S_OK);


	TESTC(CreateThreads((LPTHREAD_START_ROUTINE) AVCheckThread, pIDBCreateCommand, 63, hThread, dwThreadID));
	StartThreads(63, hThread);
	while(dwThreadCount < 63) 
		Sleep(100);
	ReleaseSemaphore(hEvent, 63, NULL);

	WaitForThreads(63, hThread);

	// check that each thread successfully executed
	for(i=0;i<63;i++) {
		GetExitCodeThread(hThread[i], &dwExitCode);
		CHECK(dwExitCode, S_OK);
	}

CLEANUP:
	PROVIDER_FREE(pwszInitString);
	SAFE_RELEASE(pIDBInitialize);
	SAFE_RELEASE(pIDataInitialize);
	SAFE_RELEASE(pIDBCreateSession);
	SAFE_RELEASE(pIDBCreateCommand);
	if (hEvent != INVALID_HANDLE_VALUE)
		::CloseHandle(hEvent);
	TRETURN
}

// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACTIVESESSIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_1()
{
	TBEGIN;

	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNABORT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNABORT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNABORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_2()
{
	TBEGIN;

	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNABORT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNABORT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_3()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNCOMMIT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ASYNCTXNCOMMIT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BYREFACCESSORS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_4()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BYREFACCESSORS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BYREFACCESSORS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGLOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_5()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CATALOGLOCATION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CATALOGLOCATION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGTERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_6()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CATALOGTERM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CATALOGTERM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_7()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CATALOGUSAGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CATALOGUSAGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNDEFINITION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_8()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COLUMNDEFINITION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COLUMNDEFINITION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_9()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CONCATNULLBEHAVIOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CONCATNULLBEHAVIOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCENAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_10()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DATASOURCENAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DATASOURCENAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_11()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DATASOURCEREADONLY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DATASOURCEREADONLY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_12()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DBMSNAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DBMSNAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_13()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DBMSVER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DBMSVER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DSOTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_14()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DSOTHREADMODEL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DSOTHREADMODEL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GROUPBY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_15()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_GROUPBY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_GROUPBY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_16()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_HETEROGENEOUSTABLES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_HETEROGENEOUSTABLES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_17()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IDENTIFIERCASE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IDENTIFIERCASE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXINDEXSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_18()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXINDEXSIZE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXINDEXSIZE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_19()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXOPENCHAPTERS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXOPENCHAPTERS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXORSINFILTER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_20()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXORSINFILTER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXORSINFILTER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_21()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXROWSIZE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXROWSIZE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_22()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXROWSIZEINCLUDESBLOB, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXROWSIZEINCLUDESBLOB, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_23()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXSORTCOLUMNS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXSORTCOLUMNS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_24()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXTABLESINSELECT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXTABLESINSELECT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_25()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MULTIPLEPARAMSETS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MULTIPLEPARAMSETS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLERESULTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_26()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MULTIPLERESULTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MULTIPLERESULTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_27()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MULTIPLESTORAGEOBJECTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MULTIPLESTORAGEOBJECTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_28()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MULTITABLEUPDATE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MULTITABLEUPDATE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_29()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NULLCOLLATION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NULLCOLLATION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OLEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_30()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OLEOBJECTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OLEOBJECTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_31()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ORDERBYCOLUMNSINSELECT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ORDERBYCOLUMNSINSELECT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_32()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OUTPUTPARAMETERAVAILABILITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OUTPUTPARAMETERAVAILABILITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_33()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PERSISTENTIDTYPE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PERSISTENTIDTYPE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_34()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PREPAREABORTBEHAVIOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PREPAREABORTBEHAVIOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_35()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PREPARECOMMITBEHAVIOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PREPARECOMMITBEHAVIOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROCEDURETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_36()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROCEDURETERM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROCEDURETERM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_37()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROVIDERFILENAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROVIDERFILENAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_38()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROVIDEROLEDBVER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROVIDEROLEDBVER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_39()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROVIDERVER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROVIDERVER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_40()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_QUOTEDIDENTIFIERCASE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_QUOTEDIDENTIFIERCASE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_41()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ROWSETCONVERSIONSONCOMMAND, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ROWSETCONVERSIONSONCOMMAND, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMATERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_42()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SCHEMATERM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SCHEMATERM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMAUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_43()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SCHEMAUSAGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SCHEMAUSAGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SORTONINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_44()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SORTONINDEX, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SORTONINDEX, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SQLSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_45()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SQLSUPPORT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SQLSUPPORT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_46()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_STRUCTUREDSTORAGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_STRUCTUREDSTORAGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUBQUERIES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_47()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SUBQUERIES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SUBQUERIES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_48()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNDDL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNDDL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_49()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNISOLEVELS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNISOLEVELS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_50()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNISORETAIN, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SUPPORTEDTXNISORETAIN, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_51()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_TABLETERM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_TABLETERM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_USERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_52()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_USERNAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_USERNAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CURRENTCATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_53()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CURRENTCATALOG, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CURRENTCATALOG, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_54()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_CACHE_AUTHINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_CACHE_AUTHINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_55()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_ENCRYPT_PASSWORD, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_ENCRYPT_PASSWORD, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_56()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_INTEGRATED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_INTEGRATED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_57()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_MASK_PASSWORD, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_MASK_PASSWORD, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_58()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_PASSWORD, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_PASSWORD, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_59()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_PERSIST_ENCRYPTED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_PERSIST_ENCRYPTED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_60()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_USERID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_61()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_AUTH_USERID, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_AUTH_USERID, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_62()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_ASYNCH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_ASYNCH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_DATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_63()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_DATASOURCE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_DATASOURCE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_HWND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_64()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_HWND, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_HWND, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_65()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_IMPERSONATION_LEVEL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_IMPERSONATION_LEVEL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_66()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_LCID, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_LCID, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_67()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_LOCATION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_LOCATION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_MODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_68()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_MODE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_MODE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROMPT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_69()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_PROMPT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_PROMPT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_70()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_PROTECTION_LEVEL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_PROTECTION_LEVEL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_71()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_PROVIDERSTRING, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_PROVIDERSTRING, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_TIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_72()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_TIMEOUT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_TIMEOUT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_73()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_AUTOINCREMENT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_AUTOINCREMENT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DEFAULT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_74()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_DEFAULT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_DEFAULT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DESCRIPTION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_75()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_DESCRIPTION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_DESCRIPTION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_76()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_FIXEDLENGTH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_FIXEDLENGTH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_NULLABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_77()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_NULLABLE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_NULLABLE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_78()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_PRIMARYKEY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_PRIMARYKEY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_79()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_UNIQUE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_UNIQUE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_80()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_AUTOUPDATE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_AUTOUPDATE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_81()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_CLUSTERED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_CLUSTERED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_82()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_FILLFACTOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_FILLFACTOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_83()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(DBPROP_INDEX_INITIALSIZE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(DBPROP_INDEX_INITIALSIZE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_84()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_NULLCOLLATION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_NULLCOLLATION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(85)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_85()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_NULLS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_NULLS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(86)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_86()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_PRIMARYKEY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_PRIMARYKEY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_87()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_SORTBOOKMARKS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_SORTBOOKMARKS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_88()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_TEMPINDEX, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_TEMPINDEX, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_89()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_TYPE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_TYPE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_90()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INDEX_UNIQUE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INDEX_UNIQUE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_91()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SESS_AUTOCOMMITISOLEVELS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SESS_AUTOCOMMITISOLEVELS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(92)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_92()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_TBL_TEMPTABLE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_TBL_TEMPTABLE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(93)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ABORTPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_93()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ABORTPRESERVE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ABORTPRESERVE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(94)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_APPENDONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_94()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_APPENDONLY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_APPENDONLY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(95)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_95()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BLOCKINGSTORAGEOBJECTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BLOCKINGSTORAGEOBJECTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(96)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_96()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(97)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_97()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKSKIPPED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKSKIPPED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(98)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_98()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKTYPE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKTYPE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(99)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CACHEDEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_99()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CACHEDEFERRED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CACHEDEFERRED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(100)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_100()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CANFETCHBACKWARDS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CANFETCHBACKWARDS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(101)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANHOLDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_101()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CANHOLDROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CANHOLDROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(102)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_102()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CANSCROLLBACKWARDS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CANSCROLLBACKWARDS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(103)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_103()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CHANGEINSERTEDROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CHANGEINSERTEDROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(104)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_104()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COLUMNRESTRICT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COLUMNRESTRICT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(105)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_105()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COMMANDTIMEOUT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COMMANDTIMEOUT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(106)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMITPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_106()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COMMITPRESERVE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COMMITPRESERVE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(107)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_107()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DEFERRED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DEFERRED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(108)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_108()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DELAYSTORAGEOBJECTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DELAYSTORAGEOBJECTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(109)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_109()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_FILTERCOMPAREOPS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_FILTERCOMPAREOPS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(110)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_110()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_FINDCOMPAREOPS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_FINDCOMPAREOPS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(111)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMMOBILEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_111()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IMMOBILEROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IMMOBILEROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(112)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_112()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_LITERALBOOKMARKS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_LITERALBOOKMARKS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(113)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_113()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_LITERALIDENTITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_LITERALIDENTITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(114)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_114()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXOPENROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXOPENROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(115)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXPENDINGROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_115()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXPENDINGROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXPENDINGROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(116)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_116()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAXROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAXROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(117)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_117()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MAYWRITECOLUMN, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MAYWRITECOLUMN, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(118)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MEMORYUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_118()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MEMORYUSAGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MEMORYUSAGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(119)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_119()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFICATIONPHASES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFICATIONPHASES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(120)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_120()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYCOLUMNSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYCOLUMNSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(121)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_121()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWDELETE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWDELETE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(122)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_122()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWFIRSTCHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWFIRSTCHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(123)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_123()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWINSERT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWINSERT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(124)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_124()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWRESYNCH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWRESYNCH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(125)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_125()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETRELEASE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETRELEASE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(126)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_126()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(127)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_127()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDOCHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDOCHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(128)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_128()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDODELETE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDODELETE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(129)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_129()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDOINSERT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUNDOINSERT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(130)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_130()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUPDATE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWUPDATE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(131)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_131()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ORDEREDBOOKMARKS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ORDEREDBOOKMARKS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(132)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_132()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OTHERINSERT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OTHERINSERT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(133)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_133()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OTHERUPDATEDELETE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OTHERUPDATEDELETE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(134)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_134()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OWNINSERT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OWNINSERT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(135)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_135()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OWNUPDATEDELETE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OWNUPDATEDELETE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(136)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUICKRESTART - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_136()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_QUICKRESTART, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_QUICKRESTART, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(137)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REENTRANTEVENTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_137()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_REENTRANTEVENTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_REENTRANTEVENTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(138)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REMOVEDELETED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_138()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_REMOVEDELETED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_REMOVEDELETED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(139)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_139()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_REPORTMULTIPLECHANGES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_REPORTMULTIPLECHANGES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(140)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_140()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_RETURNPENDINGINSERTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_RETURNPENDINGINSERTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(141)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_141()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ROWRESTRICT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ROWRESTRICT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(142)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_142()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ROWSET_ASYNCH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ROWSET_ASYNCH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(143)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_143()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ROWTHREADMODEL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ROWTHREADMODEL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(144)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_144()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SERVERCURSOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SERVERCURSOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(145)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_145()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_TRANSACTEDOBJECT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_TRANSACTEDOBJECT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(146)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UPDATABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_146()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_UPDATABILITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_UPDATABILITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(147)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRONGIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_147()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_STRONGIDENTITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_STRONGIDENTITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(148)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IAccessor - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_148()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IACCESSOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IACCESSOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(149)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IChapteredRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_149()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICHAPTEREDROWSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICHAPTEREDROWSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(150)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_150()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(151)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_151()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSROWSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSROWSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(152)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConnectionPointContainer - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_152()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICONNECTIONPOINTCONTAINER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICONNECTIONPOINTCONTAINER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(153)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConvertType - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_153()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICONVERTTYPE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICONVERTTYPE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(154)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDBAsynchStatus - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_154()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IDBASYNCHSTATUS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IDBASYNCHSTATUS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(155)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_155()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(156)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_156()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETCHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETCHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(157)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetFind - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_157()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETFIND, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETFIND, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(158)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIdentity - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_158()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETIDENTITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETIDENTITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(159)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_159()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETINDEX, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETINDEX, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(160)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_160()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(161)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetLocate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_161()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETLOCATE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETLOCATE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(162)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetResynch - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_162()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETRESYNCH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETRESYNCH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(163)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetScroll - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_163()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETSCROLL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETSCROLL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(164)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetUpdate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_164()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETUPDATE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETUPDATE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(165)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetView - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_165()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETVIEW, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETVIEW, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(166)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewChapter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_166()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IVIEWCHAPTER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IVIEWCHAPTER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(167)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewFilter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_167()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IVIEWFILTER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IVIEWFILTER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(168)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_168()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IVIEWROWSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IVIEWROWSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(169)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewSort - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_169()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IVIEWSORT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IVIEWSORT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(170)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ILockBytes - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_170()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ILOCKBYTES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ILOCKBYTES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(171)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISequentialStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_171()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ISEQUENTIALSTREAM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ISEQUENTIALSTREAM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(172)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStorage - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_172()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ISTORAGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ISTORAGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(173)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_173()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ISTREAM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ISTREAM, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(174)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISupportErrorInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_174()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ISUPPORTERRORINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ISUPPORTERRORINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(175)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ALTERCOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_175()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ALTERCOLUMN, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ALTERCOLUMN, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(176)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_176()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CONNECTIONSTATUS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CONNECTIONSTATUS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(177)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_177()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROVIDERFRIENDLYNAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROVIDERFRIENDLYNAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(178)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERMEMORY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_178()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_PROVIDERMEMORY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_PROVIDERMEMORY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(179)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_179()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SERVERNAME, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SERVERNAME, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(180)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_180()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_MULTIPLECONNECTIONS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_MULTIPLECONNECTIONS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(181)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RESETDATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_181()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_RESETDATASOURCE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_RESETDATASOURCE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(182)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_CATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_182()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_CATALOG, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_CATALOG, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(183)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_183()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_OLEDBSERVICES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_OLEDBSERVICES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(184)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNLCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_184()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COLUMNLCID, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COLUMNLCID, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(185)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACCESSORDER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_185()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ACCESSORDER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ACCESSORDER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(186)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_186()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKINFO, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_BOOKMARKINFO, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(187)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_187()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_HIDDENCOLUMNS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_HIDDENCOLUMNS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(188)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LOCKMODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_188()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_LOCKMODE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_LOCKMODE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(189)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_189()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFICATIONGRANULARITY, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFICATIONGRANULARITY, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(190)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROW_BULKOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_190()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ROW_BULKOPS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ROW_BULKOPS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(191)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_191()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SERVERDATAONINSERT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SERVERDATAONINSERT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(192)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STORAGEFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_192()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_STORAGEFLAGS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_STORAGEFLAGS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(193)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UNIQUEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_193()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_UNIQUEROWS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_UNIQUEROWS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(194)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMultipleResults - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_194()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IMULTIPLERESULTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IMULTIPLERESULTS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(195)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetRefresh - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_195()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETREFRESH, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETREFRESH, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(196)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IParentRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_196()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IPARENTROWSET, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IPARENTROWSET, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(197)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_INCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_197()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_INCREMENT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_INCREMENT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(198)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_ISLONG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_198()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_ISLONG, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_ISLONG, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(199)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_SEED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_199()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COL_SEED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COL_SEED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(200)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_200()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_COMSERVICES, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_COMSERVICES, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(201)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCETYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_201()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_DATASOURCETYPE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_DATASOURCETYPE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(202)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GENERATEURL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_202()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_GENERATEURL, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_GENERATEURL, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(203)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_203()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OPENROWSETSUPPORT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OPENROWSETSUPPORT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(204)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_204()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_BINDFLAGS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_BINDFLAGS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(205)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_205()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_GENERALTIMEOUT, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_GENERALTIMEOUT, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(206)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_206()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_INIT_LOCKOWNER, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_INIT_LOCKOWNER, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(207)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CLIENTCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_207()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_CLIENTCURSOR, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_CLIENTCURSOR, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(208)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_208()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETCHANGED, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_NOTIFYROWSETCHANGED, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(209)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IBindResource - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_209()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IBINDRESOURCE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IBINDRESOURCE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(210)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo2 - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_210()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSINFO2, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICOLUMNSINFO2, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(211)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ICreateRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_211()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ICREATEROW, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ICREATEROW, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(212)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_212()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IGETROW, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IGETROW, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(213)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSession - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_213()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IGETSESSION, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IGETSESSION, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(214)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSourceRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_214()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IGETSOURCEROW, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IGETSOURCEROW, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(215)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_215()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROW, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROW, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(216)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_216()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWCHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWCHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(217)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowSchemaChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_217()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSCHEMACHANGE, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSCHEMACHANGE, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(218)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_218()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETCURRENTINDEX, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETCURRENTINDEX, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(219)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IScopedOperations - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropInfo::Variation_219()
{
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_ISCOPEDOPERATIONS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_ISCOPEDOPERATIONS, FALSE));

CLEANUP:

	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(220)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLESTATISTICS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropInfo::Variation_220()
{ 
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_TABLESTATISTICS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_TABLESTATISTICS, FALSE));

CLEANUP:

	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END


// {{ TCW_VAR_PROTOTYPE(221)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetBookmark - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropInfo::Variation_221()
{ 
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_IROWSETBOOKMARK, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_IROWSETBOOKMARK, FALSE));

CLEANUP:

	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END




// {{ TCW_VAR_PROTOTYPE(222)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SKIPROWCOUNTRESULTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropInfo::Variation_222()
{ 
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_SKIPROWCOUNTRESULTS, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_SKIPROWCOUNTRESULTS, FALSE));

CLEANUP:

	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END




// {{ TCW_VAR_PROTOTYPE(223)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTSTREAM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropInfo::Variation_223()
{ 
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OUTPUTSTREAM, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OUTPUTSTREAM, FALSE));

CLEANUP:

	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END




// {{ TCW_VAR_PROTOTYPE(224)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTENCODING - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropInfo::Variation_224()
{ 
	TBEGIN;
	
	//IDBProperties::GetPropertyInfo while initialized
	TESTC(GetPropInfoTest(IDX_OUTPUTENCODING, TRUE));

	//IDBProperties::GetPropertyInfo while Uninitialized
	TESTC(GetPropInfoTest(IDX_OUTPUTENCODING, FALSE));

CLEANUP:

	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_GetPropInfo::Terminate()
{
	// Release the objects
	SAFE_RELEASE(m_pIDBProperties);
	SAFE_RELEASE(m_pIDBPropUninit);

	return(TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_Parameters)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_Parameters - IDBProperties::Parameters
//|	Created:		08/12/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_Parameters::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		//Get the default values
		if(!g_fInitGetPropInfoDefault)
		{
			if(COMPARE(InitGetPropInfoDefault(),TRUE))
				g_fInitGetPropInfoDefault=TRUE;
			else
				return FALSE;
		}

		m_cPropertyIDSets=1;
		m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
		m_rgPropertyIDSets->cPropertyIDs=1;
		m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

		//Get the default values if we have not done it already
		if(!g_fInitGetPropDefault)
		{
			if(COMPARE(InitGetPropDefault(),TRUE))
				g_fInitGetPropDefault = TRUE;
			else
				return FALSE;
		}

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a NULL pcPropertyInfoSets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_1()
{
	//Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_prgPropertyInfoSets = INVALID(DBPROPINFOSET*);
	m_ppDescBuffer		  = INVALID(OLECHAR*);

	//Null pcPropertyInfoSets should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				NULL, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG))
	{
		if(!m_prgPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;
	}

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a NULL prgPropertyInfoSets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_2()
{
	// Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_pcPropertyInfoSets = INVALID(ULONG);
	m_ppDescBuffer		 = INVALID(OLECHAR*);

	//Null prgPropertyInfoSets should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertyInfoSets, NULL, &m_ppDescBuffer), E_INVALIDARG))
		if(!m_pcPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_3()
{
	// Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_pcPropertyInfoSets  = INVALID(ULONG);
	m_prgPropertyInfoSets = INVALID(DBPROPINFOSET*);
	m_ppDescBuffer		  = INVALID(OLECHAR*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(2, NULL, &m_pcPropertyInfoSets,
			&m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG))
		if(!m_prgPropertyInfoSets  && !m_pcPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_4()
{
	// Assignments
	m_rgPropertyIDSets->rgPropertyIDs = NULL;
	m_fSuccess = TEST_FAIL;

	// Dirty the output params
	m_pcPropertyInfoSets  = INVALID(ULONG);
	m_prgPropertyInfoSets = INVALID(DBPROPINFOSET*);
	m_ppDescBuffer		  = INVALID(OLECHAR*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG))
		if(!m_prgPropertyInfoSets  && !m_pcPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set DBPROPID pointer back
	m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a Special GUID first in the array - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_5()
{
	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets=2;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFOALL;
	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	// Dirty the output params
	m_pcPropertyInfoSets  = INVALID(ULONG);
	m_prgPropertyInfoSets = INVALID(DBPROPINFOSET*);
	m_ppDescBuffer		  = INVALID(OLECHAR*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG))
		if(!m_prgPropertyInfoSets  && !m_pcPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a Special GUID last in the array - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_6()
{
	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets=2;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFO;
	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_ROWSETALL;

	// Dirty the output params
	m_pcPropertyInfoSets  = INVALID(ULONG);
	m_prgPropertyInfoSets = INVALID(DBPROPINFOSET*);
	m_ppDescBuffer		  = INVALID(OLECHAR*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG))
		if(!m_prgPropertyInfoSets  && !m_pcPropertyInfoSets  && !m_ppDescBuffer)
			m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_7()
{
	IDBProperties *	pIDBProperties = NULL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	//Get a settable DBInit or DataSourceInfo property 
	if (SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else
		return TEST_SKIPPED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 1))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets->rgPropertyInfos->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if ((SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END)) && (!COMPARE(m_prgPropertyInfoSets->guidPropertySet,DBPROPSET_DBINIT)))
		goto END;
	if ((!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END)) && (!COMPARE(m_prgPropertyInfoSets->guidPropertySet,DBPROPSET_DATASOURCEINFO)))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_8()
{
	IDBProperties *	pIDBProperties = NULL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(0, NULL,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK))
		goto END;

	if(COMPARE(g_ulDBInitProp+g_ulExtraDBInitProp, m_pcPropertyInfoSets))
		m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_9()
{
	IDBProperties *	pIDBProperties = NULL;
	DBPROPID rgPropertyIDs1;

	//Get a DataSourceInfo property 
	if (SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		return TEST_SKIPPED;

	//Get a settable DBInit or DataSourceInfo property 
	if (SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else
		return TEST_SKIPPED;

	// Assignments
	m_fSuccess			= TEST_FAIL;
	m_cPropertyIDSets   = 2;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs1;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_S_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 2))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->dwFlags,DBPROPFLAGS_NOTSUPPORTED))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->vtType,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->vValues.vt,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].rgPropertyInfos->dwPropertyID,rgPropertyIDs1)) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].guidPropertySet,DBPROPSET_DBINIT))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_10()
{
	IDBProperties *	pIDBProperties = NULL;
	DBPROPID rgPropertyIDs1;

	//Get a not supported property 
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else
		m_rgPropertyIDs[0] = 0;

	//Get a settable DBInit or DataSourceInfo property 
	if(SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else
		return TEST_SKIPPED;

	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 2;
	m_rgPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs1;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_S_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 2))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->dwFlags,DBPROPFLAGS_NOTSUPPORTED))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->vtType,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos->vValues.vt,0))
		goto END;
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) &&
	   !COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_DBINIT))
		goto END;
	if(!NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) &&
	   !COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].rgPropertyInfos->dwPropertyID,rgPropertyIDs1)) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].rgPropertyInfos->dwFlags==DBPROPFLAGS_NOTSUPPORTED,FALSE))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].guidPropertySet,DBPROPSET_DBINIT))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_11()
{
	IDBProperties *	pIDBProperties = NULL;

	//Get a settable DataSourceInfo property 
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		return TEST_SKIPPED;

	// Assignments
	m_fSuccess = TEST_FAIL;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 1))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets->rgPropertyInfos->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets->rgPropertyInfos->dwFlags,DBPROPFLAGS_NOTSUPPORTED))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets->rgPropertyInfos->vtType,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets->rgPropertyInfos->vValues.vt,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets->guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with an unsupported PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_12()
{
	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 1;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].guidPropertySet = GUID_NULL;

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 1))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos,NULL)) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].cPropertyInfos,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,GUID_NULL))
		goto END;
	if(!COMPARE(m_ppDescBuffer,NULL)) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	
	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_13()
{
	HRESULT	Exphr = DB_S_ERRORSOCCURRED;

	// Assignments
	m_fSuccess			= TEST_FAIL;
	m_cPropertyIDSets   = 2;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].guidPropertySet = GUID_NULL;
	m_rgPropertyIDSets[1].cPropertyIDs = 0;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DATASOURCEINFO;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 2))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos,NULL)) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].cPropertyInfos,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,GUID_NULL))
		goto END;
	if( (FAILED(Exphr) && m_prgPropertyInfoSets[1].rgPropertyInfos) || 
		(SUCCEEDED(Exphr) && !m_prgPropertyInfoSets[1].rgPropertyInfos) ) 
		goto END;
	if( (FAILED(Exphr) && m_prgPropertyInfoSets[1].cPropertyInfos) || 
		(SUCCEEDED(Exphr) && !m_prgPropertyInfoSets[1].cPropertyInfos) ) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[1].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a NULL pcPropertySets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_14()
{
	//Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Null pcPropertySets should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
				NULL, &m_prgPropertySets), E_INVALIDARG))
	{
		if(!m_prgPropertySets)
			m_fSuccess = TEST_PASS;
	}

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a NULL prgPropertySets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_15()
{
	// Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);

	//Null prgPropertySets should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertySets, NULL), E_INVALIDARG))
		if(!m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with cPropertyIDSets!=0, rgPropertyIDSets=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_16()
{
	// Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(2, NULL, &m_pcPropertySets,
			&m_prgPropertySets), E_INVALIDARG))
		if(!m_prgPropertySets  && !m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with cPropertyIDs!=0, rgPropertyIDs=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_17()
{
	// Assignments
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess			= TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG))
		if(!m_prgPropertySets  && !m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	//Set Property back
	m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTYIESINERROR with cPropertyIDs>0 - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_18()
{
	// Assignments
	m_rgPropertyIDs[0] = DBPROP_ACTIVESESSIONS;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_PROPERTIESINERROR;
	m_fSuccess = TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG))
		if(!m_prgPropertySets  && !m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTYIESINERROR with rgPropertyIDs != NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_19()
{
	// Assignments
	m_rgPropertyIDs[0] = DBPROP_IRowset;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_PROPERTIESINERROR;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_fSuccess = TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG))
		if(!m_prgPropertySets  && !m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc GetProperties DBPROPSET_PROPERTYIESINERROR with 2 PropertyIDSets - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_20()
{
	// Assignments
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_PROPERTIESINERROR;
	m_fSuccess = TEST_FAIL;

	// Dirty the output params
	m_pcPropertySets  = INVALID(ULONG);
	m_prgPropertySets = INVALID(DBPROPSET*);

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetProperties(2, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG))
		if(!m_prgPropertySets  && !m_pcPropertySets)
			m_fSuccess = TEST_PASS;

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_21()
{
	DBPROPID rgPropertyIDs1;

	//Get a settable DBInit or DataSourceInfo property 
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else if(NotSupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		m_rgPropertyIDs[0] = 0;

	//Get a settable DBInit or DataSourceInfo property 
	if(SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else if(SupportedProperty(&rgPropertyIDs1,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		return TEST_SKIPPED;

	// Assignments
	m_fSuccess			= TEST_FAIL;
	m_cPropertyIDSets   = 2;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs1;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_S_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertySets, 2))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) &&
	   !COMPARE(m_prgPropertySets[0].guidPropertySet,DBPROPSET_DBINIT))
		goto END;
	if(!NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) &&
	   !COMPARE(m_prgPropertySets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;
	if(!COMPARE(m_prgPropertySets[1].rgProperties->dwPropertyID,rgPropertyIDs1)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[1].rgProperties->dwStatus,DBPROPSTATUS_OK))
		goto END;
	if(SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END) && 
	   !COMPARE(m_prgPropertySets[1].guidPropertySet,DBPROPSET_DBINIT))
		goto END;
	if(!SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END) && 
	   !COMPARE(m_prgPropertySets[1].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_22()
{
	//Get a settable DBInit or DataSourceInfo property 
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else if(NotSupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		m_rgPropertyIDs[0] = 0;

	// Assignments
	m_fSuccess = TEST_FAIL;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertySets->rgProperties->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertySets->rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) &&
	   !COMPARE(m_prgPropertySets[0].guidPropertySet,DBPROPSET_DBINIT))
		goto END;
	if(!NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END) && 
	   !COMPARE(m_prgPropertySets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO) )
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with cPropertyIDs!=0, rgPropertyID=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_23()
{
	// Assignments
	m_fSuccess			= TEST_FAIL;

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->SetProperties(1, NULL), E_INVALIDARG))
		m_fSuccess = TEST_PASS;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with cProperties!=0, rgProperties=NULL - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_24()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertySets->guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets->cProperties=1;
   	m_rgPropertySets->rgProperties=NULL;

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->SetProperties(1,m_rgPropertySets),E_INVALIDARG))
		m_fSuccess = TEST_PASS;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with a supported and unsupported PropertySet - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_25()
{
	DBPROP	rgProperties; 
	DBPROP	rgProperties1; 
	HRESULT	Exphr = DB_S_ERRORSOCCURRED;
	
	// Assignments
	m_fSuccess=TEST_FAIL;
	memset(&rgProperties ,0,sizeof(DBPROP));
	memset(&rgProperties1,0,sizeof(DBPROP));
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties = &rgProperties;
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_EMPTY;
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	m_rgPropertySets[1].cProperties=1;
   	m_rgPropertySets[1].rgProperties=&rgProperties1;
	m_rgPropertySets[1].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[1].rgProperties->vValue.vt = VT_EMPTY;
	m_rgPropertySets[1].guidPropertySet = DBPROPSET_DATASOURCE;

	//Get a not supported property 
	if(!NotSupportedProperty(&rgProperties.dwPropertyID,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		rgProperties.dwPropertyID = 0;

	//Get a settable DataSource property 
	rgProperties1.dwPropertyID = DBPROP_CURRENTCATALOG;
	if (!g_rgDBProperties[IDX_CURRENTCATALOG].fSupported)
		Exphr = DB_E_ERRORSOCCURRED;

	//Call SetProperties
	if(!CHECK(m_pIDBProperties->SetProperties(2, m_rgPropertySets), Exphr))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,rgProperties.dwPropertyID)) 
		goto END;
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if (!COMPARE(m_rgPropertySets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwPropertyID,rgProperties1.dwPropertyID)) 
		goto END;
	if ((!g_rgDBProperties[IDX_CURRENTCATALOG].fSupported) && (!COMPARE(m_rgPropertySets[1].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED)))
		goto END;
	if ((g_rgDBProperties[IDX_CURRENTCATALOG].fSupported) && (!COMPARE(m_rgPropertySets[1].rgProperties->dwStatus,DBPROPSTATUS_OK)))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].guidPropertySet,DBPROPSET_DATASOURCE))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with an unsupported PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_26()
{
	DBPROP	rgProperties; 
	
	// Assignments
	m_fSuccess=TEST_FAIL;
	memset(&rgProperties ,0,sizeof(DBPROP));
	m_rgPropertySets[0].cProperties=1;
   	m_rgPropertySets[0].rgProperties=&rgProperties;
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_EMPTY;
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;

	//Get a not supported property 
	if(!NotSupportedProperty(&rgProperties.dwPropertyID,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		rgProperties.dwPropertyID = 0;

	//Call SetProperties
	if(!CHECK(m_pIDBProperties->SetProperties(1, m_rgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,rgProperties.dwPropertyID)) 
		goto END;
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if (!COMPARE(m_rgPropertySets[0].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_COLUMN PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_27()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_COLUMN;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 0)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties, NULL)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_COLUMN))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_DATASOURCE PropertySet - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_28()
{
	ULONG cnt,index;
	HRESULT hr;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCE;

	//Call GetProperties
	hr=m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets);

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DATASOURCE))
		goto END;

	//Check Return code
	if(!m_prgPropertySets[0].cProperties)
	{
		//Check to see that nothing is supported
		for(index=IDX_DATASOURCE_START; index<=IDX_DATASOURCE_END; index++) 
			COMPARE(g_rgDBProperties[index].fSupported, FALSE);

		if(!CHECK(hr,DB_E_ERRORSOCCURRED))
			goto END;
	}
	else
		CHECK(hr,S_OK);
	
	//Check to see if the Property is returned
	for(cnt=0; cnt<m_prgPropertySets[0].cProperties; cnt++)
	{
		for(index=IDX_DATASOURCE_START; index<=IDX_DATASOURCE_END; index++)
		{
			if(m_prgPropertySets->rgProperties[cnt].dwPropertyID == g_rgDBProperties[index].dwPropertyID)
				break;
		}

		// Not in the DBPROPSET
		if(index > IDX_DATASOURCE_END)
			goto END;
	}

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_DATASOURCEINFO PropertySet - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_29()
{
	ULONG cnt,index;
	HRESULT	Exphr = S_OK;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), Exphr))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DATASOURCEINFO))
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].rgProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].rgProperties) ) 
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].cProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].cProperties) ) 
		goto END;

	//Check to see if the Property is returned
	for(cnt=0; cnt<m_prgPropertySets[0].cProperties; cnt++)
	{
		for(index=IDX_DATASOURCEINFO_START; index<=IDX_DATASOURCEINFO_END; index++)
		{
			if(m_prgPropertySets->rgProperties[cnt].dwPropertyID == g_rgDBProperties[index].dwPropertyID)
				break;
		}

		// Not in the DBPROPSET
		if(index > IDX_DATASOURCEINFO_END)
			goto END;
	}

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_DBINIT PropertySet - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_30()
{
	ULONG cnt,index;
	HRESULT	Exphr = S_OK;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DBINIT;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), Exphr))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DBINIT))
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].rgProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].rgProperties) ) 
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].cProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].cProperties) ) 
		goto END;

	//Check to see if the Property is returned
	for(cnt=0; cnt<m_prgPropertySets[0].cProperties; cnt++)
	{
		for(index=IDX_DBINIT_START; index<=IDX_DBINIT_END; index++)
		{
			if(m_prgPropertySets->rgProperties[cnt].dwPropertyID == g_rgDBProperties[index].dwPropertyID)
				break;
		}

		// Not in the DBPROPSET
		if(index > IDX_DBINIT_END)
			goto END;
	}

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_INDEX PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_31()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_INDEX;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 0)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties, NULL)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_INDEX))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_ROWSET PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_32()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_ROWSET;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 0)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties, NULL)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_ROWSET))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_SESSION PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_33()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_SESSION;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 0)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties, NULL)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_SESSION))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_TABLE PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_34()
{
	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_TABLE;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 0)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties, NULL)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_TABLE))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_35()
{
	IDBProperties *	pIDBProperties = NULL;
	HRESULT	Exphr = S_OK;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DBINIT;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), Exphr))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DBINIT))
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].rgProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].rgProperties) ) 
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].cProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].cProperties) ) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state with 0 and NULL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_36()
{
	IDBProperties *	pIDBProperties = NULL;
	HRESULT	Exphr = S_OK;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DBINIT;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), Exphr))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].rgProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].rgProperties) ) 
		goto END;
	if( (FAILED(Exphr) && m_prgPropertySets[0].cProperties) || 
		(SUCCEEDED(Exphr) && !m_prgPropertySets[0].cProperties) ) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_37()
{
	IDBProperties *	pIDBProperties = NULL;
	DBPROPID rgPropertyIDs1;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_cPropertyIDSets = 2;
	m_rgPropertyIDSets[0].cPropertyIDs = 1;
	m_rgPropertyIDSets[0].rgPropertyIDs = m_rgPropertyIDs;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs1;

	//Get a DataSourceInfo property 
	if(SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		return TEST_SKIPPED;

	//Get a settable DBInit or DataSourceInfo property 
	if(SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else
		return TEST_FAIL;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_S_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 2))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->vValue.vt,0)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DATASOURCEINFO))
		goto END;
	if(!COMPARE(m_prgPropertySets[1].rgProperties->dwPropertyID,rgPropertyIDs1)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[1].guidPropertySet, DBPROPSET_DBINIT))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_38()
{
	IDBProperties *	pIDBProperties = NULL;
	DBPROPID rgPropertyIDs1;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_cPropertyIDSets = 2;
	m_rgPropertyIDSets[0].cPropertyIDs = 1;
	m_rgPropertyIDSets[0].rgPropertyIDs = m_rgPropertyIDs;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = &rgPropertyIDs1;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;

	//Get a not supported property 
	if(NotSupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else
		m_rgPropertyIDs[0] = 0;

	//Get a settable DBInit or DataSourceInfo property 
	if(SupportedProperty(&rgPropertyIDs1,IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else
		return TEST_SKIPPED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_S_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 2))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwPropertyID,m_rgPropertyIDs[0])) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->vValue.vt,0)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DBINIT))
		goto END;
	if(!COMPARE(m_prgPropertySets[1].rgProperties->dwPropertyID,rgPropertyIDs1)) 
		goto END;
	if (!COMPARE(m_prgPropertySets[1].guidPropertySet, DBPROPSET_DBINIT))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_39()
{
	IDBProperties *	pIDBProperties = NULL;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=1;
	m_rgPropertyIDSets[0].rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	//Get a settable DataSourceInfo property 
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		return TEST_SKIPPED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

		//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if (!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DATASOURCEINFO))
		goto END;
	if((!m_prgPropertySets[0].cProperties) || (!m_prgPropertySets[0].rgProperties)) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with a data source object in an uninitialized state - E_INVALIDARG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_40()
{
	IDBProperties *	pIDBProperties = NULL;

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDSets[0].cPropertyIDs=1;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	//Get a settable DataSourceInfo property 
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		return TEST_SKIPPED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), E_INVALIDARG))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if((m_pcPropertySets) || (m_prgPropertySets)) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	//Set Property back
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with DBPROPSET_PROPERTIESINERROR PropertySet - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_41()
{
	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 1;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_PROPERTIESINERROR;

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 1))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos,NULL)) 
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].cPropertyInfos,0))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_PROPERTIESINERROR))
		goto END;
	if(!COMPARE(m_ppDescBuffer,NULL)) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with DBPROPSET_DATASOURCE PropertySet - S_OK or DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_42()
{
	HRESULT ExpHR = DB_E_ERRORSOCCURRED;
	ULONG	ulSupported = 0;

	// Assignments
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 1;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCE;

	// Check for the returncode
	for(ULONG index=IDX_DATASOURCE_START; index <= IDX_DATASOURCE_END; index++)
	{
		if(g_rgDBProperties[index].fSupported)
		{
			ExpHR = S_OK;
			ulSupported++;
		}
	}

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), ExpHR))
		goto END;

	//Count of propinfo sets
	if(!COMPARE(m_pcPropertyInfoSets, 1))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(ExpHR) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_prgPropertyInfoSets[0].cPropertyInfos,ulSupported))
		goto END;
	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_DATASOURCE))
		goto END;
	
	if(ulSupported)
	{
		if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos != NULL, TRUE)) 
			goto END;
		if(!COMPARE(m_ppDescBuffer != NULL, TRUE)) 
			goto END;
	}
	else
	{
		if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos,NULL)) 
			goto END;
		if(!COMPARE(m_ppDescBuffer,NULL)) 
			goto END;
	}

	m_fSuccess = TEST_PASS;

END:
	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all DBPROPSET_DATASOURCE Properties - S_OK or DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_43()
{
	HRESULT ExpHR = S_OK;
	DBSTATUS ExpStatus = DBPROPSTATUS_OK;
	DBPROP	rgProperties; 
	
	// Assignments
	m_fSuccess=TEST_FAIL;
	memset(&rgProperties ,0,sizeof(DBPROP));
	rgProperties.dwPropertyID = DBPROP_CURRENTCATALOG;

	m_rgPropertySets[0].cProperties=1;
   	m_rgPropertySets[0].rgProperties=&rgProperties;
	m_rgPropertySets[0].rgProperties->dwOptions = DBPROPOPTIONS_REQUIRED;
	m_rgPropertySets[0].rgProperties->vValue.vt = VT_EMPTY;
	m_rgPropertySets[0].guidPropertySet = DBPROPSET_DATASOURCE;

	//Check support of Current Catalog
	if(!g_rgDBProperties[IDX_CURRENTCATALOG].fSupported)
	{
		ExpHR = DB_E_ERRORSOCCURRED;
		ExpStatus = DBPROPSTATUS_NOTSUPPORTED;
	}

	//Call SetProperties
	if(!CHECK(m_pIDBProperties->SetProperties(1, m_rgPropertySets), ExpHR))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,rgProperties.dwPropertyID)) 
		goto END;
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,ExpStatus))
		goto END;
	if (!COMPARE(m_rgPropertySets[0].guidPropertySet,DBPROPSET_DATASOURCE))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_44()
{
	HRESULT	Exphr = S_OK;

	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 1;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;

	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_fSuccess = TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	if(COMPARE(1, m_pcPropertyInfoSets))
		m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object in an uninitialized state with 0 and NULL for rgPropertyIDSets - DB_E_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_45()
{
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 4;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCE;
	m_rgPropertyIDSets[1].cPropertyIDs = 0;
	m_rgPropertyIDSets[1].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	m_rgPropertyIDSets[2].cPropertyIDs = 0;
	m_rgPropertyIDSets[2].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[2].guidPropertySet = DBPROPSET_SESSION;
	m_rgPropertyIDSets[3].cPropertyIDs = 0;
	m_rgPropertyIDSets[3].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[3].guidPropertySet = DBPROPSET_ROWSET;

	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_fSuccess = TEST_FAIL;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;

	//Call GetPropertyInfo 
	if(!CHECK(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED))
		goto END;

	if(!COMPARE(4, m_pcPropertyInfoSets))
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[0].cPropertyInfos,0)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[0].rgPropertyInfos,NULL)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[0].guidPropertySet,DBPROPSET_DATASOURCE))
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[1].cPropertyInfos,0)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[1].rgPropertyInfos,NULL)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[1].guidPropertySet,DBPROPSET_DATASOURCEINFO))
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[2].cPropertyInfos,0)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[2].rgPropertyInfos,NULL)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[2].guidPropertySet,DBPROPSET_SESSION))
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[3].cPropertyInfos,0)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[3].rgPropertyInfos,NULL)) 
		goto END;

	if(!COMPARE(m_prgPropertyInfoSets[3].guidPropertySet,DBPROPSET_ROWSET))
		goto END;

	if(!COMPARE(m_ppDescBuffer,NULL)) 
		goto END;

	m_fSuccess = TEST_PASS;

END:
	// Free pIDBProperties
	SAFE_RELEASE(pIDBProperties);

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a data source object with 0 and NULL for rgPropertyIDSets - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_46()
{
	m_hr = S_OK;
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 5;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	m_rgPropertyIDSets[1].cPropertyIDs = 0;
	m_rgPropertyIDSets[1].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DATASOURCE;
	m_rgPropertyIDSets[2].cPropertyIDs = 0;
	m_rgPropertyIDSets[2].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[2].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	m_rgPropertyIDSets[3].cPropertyIDs = 0;
	m_rgPropertyIDSets[3].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[3].guidPropertySet = DBPROPSET_SESSION;
	m_rgPropertyIDSets[4].cPropertyIDs = 0;
	m_rgPropertyIDSets[4].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[4].guidPropertySet = DBPROPSET_ROWSET;

	// Assignments
	m_fSuccess = TEST_FAIL;

	// Figure out the RETURNCODE
	if((g_ulDBInitProp + g_ulDSOProp + g_ulDSOInfoProp+ g_ulSESProp + g_ulROWProp) < 5)
		m_hr = DB_S_ERRORSOCCURRED;

	if(!(g_ulDBInitProp + g_ulDSOProp + g_ulDSOInfoProp+ g_ulSESProp + g_ulROWProp))
		m_hr = DB_E_ERRORSOCCURRED;

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), m_hr))
		goto END;

	if(COMPARE(m_pcPropertyInfoSets, 5))
		m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with 0 and NULL for rgPropertyIDSets and a regular DBPROPSET_ROWSET - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_47()
{
	m_rgPropertyIDs[0] = DBPROP_LITERALIDENTITY;

	m_hr = DB_S_ERRORSOCCURRED;
	m_fSuccess = TEST_FAIL;
	m_cPropertyIDSets = 2;
	m_rgPropertyIDSets[0].cPropertyIDs = 0;
	m_rgPropertyIDSets[0].rgPropertyIDs = NULL;
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_ROWSET;
	m_rgPropertyIDSets[1].cPropertyIDs = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs = m_rgPropertyIDs;
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_ROWSET;

	// Assignments
	m_fSuccess = TEST_FAIL;

	// Figure out RETURNCODE
	if( !g_rgDBProperties[IDX_LITERALIDENTITY].fSupported &&
		!SupportedProperty(&m_rgPropertyIDs[1],IDX_ROWSET_START,IDX_ROWSET_END))
		m_hr = DB_E_ERRORSOCCURRED;

	if( g_rgDBProperties[IDX_LITERALIDENTITY].fSupported &&
		SupportedProperty(&m_rgPropertyIDs[1],IDX_ROWSET_START,IDX_ROWSET_END))
		m_hr = S_OK;

	//Call GetPropertyInfo 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), m_hr))
		goto END;

	if(COMPARE(m_pcPropertyInfoSets, 2))
		m_fSuccess = TEST_PASS;

END:

	//Free the memory
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROP_CURRENTCATALOG after changing the property value - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_48()
{
	WCHAR wszSQLStmt[] = L"use pubs";

	//Check support of Current Catalog
	if(!g_rgDBProperties[IDX_CURRENTCATALOG].fSupported ||
	   !VerifyInterface(m_pThisTestModule->m_pIUnknown2, IID_IDBCreateCommand, 
						SESSION_INTERFACE, (IUnknown **)&m_pIDBCreateCommand) )
		return TEST_SKIPPED;

	// Create a table we'll use for the whole test module,
	m_pTable = new CTable(m_pIDBCreateCommand, (LPWSTR)gwszModuleName);
	if(!m_pTable)
		goto END;

	// Command to return a ICommand with Text Set
	m_hr = m_pTable->BuildCommand(wszSQLStmt, IID_IRowset, 
			EXECUTE_IFNOERROR, 0, NULL, NULL, NULL, NULL, NULL);

	// If statement fails skip test
	if( FAILED(m_hr) ) {
		m_fSuccess = TEST_SKIPPED;
		goto END;
	}

	// Assignments
	m_fSuccess=TEST_FAIL;
	m_rgPropertyIDs[0]=DBPROP_CURRENTCATALOG;
	
	m_rgPropertyIDSets[0].cPropertyIDs=1;
	m_rgPropertyIDSets[0].rgPropertyIDs=m_rgPropertyIDs;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCE;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), S_OK))
		goto END;

	//Verify that the element of the array (guidPropertySets and property IDs)
	//are returned correctly
	if(!COMPARE(m_pcPropertySets, 1))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].cProperties, 1)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG)) 
		goto END;
	if(!COMPARE(m_prgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_OK))
		goto END;
	if(!COMPARE(m_prgPropertySets[0].guidPropertySet, DBPROPSET_DATASOURCE))
		goto END;
	if(!COMPARE(_wcsicmp(m_prgPropertySets[0].rgProperties->vValue.bstrVal, L"pubs"), 0))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	
	SAFE_RELEASE(m_pIDBCreateCommand);
	SAFE_DELETE(m_pTable);
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc GetProperties with DBPROPSET_PROPERTIESINERROR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_49()
{
	// Assignments
	m_fSuccess=TEST_FAIL;	
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_PROPERTIESINERROR;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), S_OK))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc Call GetProperties then call SetProperties - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_50()
{
	// Assignments
	m_fSuccess=TEST_FAIL;	

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(0, NULL, 
						&m_pcPropertySets, &m_prgPropertySets), S_OK))
		goto END;

	if(SUCCEEDED(m_pIDBProperties->SetProperties(m_pcPropertySets, m_prgPropertySets)))
		m_fSuccess = TEST_PASS;

END:
	
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc Call GetProperties then call SetProperties - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_51()
{
	HRESULT	Exphr = DB_S_ERRORSOCCURRED;

	// Assignments
	m_fSuccess=TEST_FAIL;	
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END) && 
	   !SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCE_START,IDX_DATASOURCE_END))
		Exphr = DB_E_ERRORSOCCURRED;

	if(SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END) && 
	   SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCE_START,IDX_DATASOURCE_END))
		Exphr = S_OK;

	//Call GetProperties
	if(!CHECK(m_pIDBProperties->GetProperties(2, m_rgPropertyIDSets, 
						&m_pcPropertySets, &m_prgPropertySets), Exphr))
		goto END;

	CHECK(m_pIDBProperties->SetProperties(m_pcPropertySets, m_prgPropertySets),S_OK);

	m_fSuccess = TEST_PASS;

END:
	
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc GetProperties before Initialize with DBPROPSET_PROPERTIESINERROR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_52()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_fSuccess = TEST_FAIL;

	if(!CHECK(m_hr = GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK))
		goto END;
	// Assignments
	m_fSuccess=TEST_FAIL;	
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_PROPERTIESINERROR;

	//Call GetProperties
	if(!CHECK(pIDBProperties->GetProperties(1, m_rgPropertyIDSets,
			&m_pcPropertySets, &m_prgPropertySets), S_OK))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	
	SAFE_RELEASE(pIDBProperties);
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with a Supported and an Unsupported property - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_53()
{
	// Assignments
	m_fSuccess = TEST_FAIL;

	m_cPropertyIDSets=2;
	m_rgPropertyIDSets[0].cPropertyIDs    = 1;
	m_rgPropertyIDSets[0].rgPropertyIDs   = &m_rgPropertyIDs[0];
	m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;

	m_rgPropertyIDSets[1].cPropertyIDs    = 1;
	m_rgPropertyIDSets[1].rgPropertyIDs   = &m_rgPropertyIDs[1];
	m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_ROWSET;

	//Fill in the property values
	if(SupportedProperty(&m_rgPropertyIDs[0],IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DBINIT;
	else if(SupportedProperty(&m_rgPropertyIDs[0],IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		return TEST_SKIPPED;

	if(NotSupportedProperty(&m_rgPropertyIDs[1],IDX_DBINIT_START,IDX_DBINIT_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DBINIT;
	else if(NotSupportedProperty(&m_rgPropertyIDs[1],IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		m_rgPropertyIDSets[1].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	else
		m_rgPropertyIDs[1] = 0;

	//Should fail gracefully 
	if(CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_S_ERRORSOCCURRED))
		m_fSuccess = TEST_PASS;

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Set Property back
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=1;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all properties - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_54()
{
	HRESULT		  Exphr			   = DB_S_ERRORSOCCURRED;
	ULONG		  cPropertyIDSets  = g_cDBProperties;
	DBPROPIDSET * rgPropertyIDSets = NULL;
	DBPROPID *	  rgPropertyIDs    = NULL;
	ULONG		  ulSupported	   = 0;

	// Allocate memory
	rgPropertyIDSets = (DBPROPIDSET *) PROVIDER_ALLOC(g_cDBProperties * sizeof(DBPROPIDSET));
	rgPropertyIDs    = (DBPROPID *) PROVIDER_ALLOC(g_cDBProperties * sizeof(DBPROPID));

	if( !rgPropertyIDSets || !rgPropertyIDs )
		return TEST_FAIL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	ULONG i;
	for(i=0; i<g_cDBProperties; i++)
	{
		rgPropertyIDs[i] = g_rgDBProperties[i].dwPropertyID;

		rgPropertyIDSets[i].cPropertyIDs    = 1;
		rgPropertyIDSets[i].rgPropertyIDs   = &rgPropertyIDs[i];
		rgPropertyIDSets[i].guidPropertySet = *g_rgDBProperties[i].pGuidPropertySet;

		ulSupported = ulSupported + g_rgDBProperties[i].fSupported;
	}

	//Figure out the returncode
	if(!ulSupported)
		Exphr = DB_E_ERRORSOCCURRED;
	
	//Should fail gracefully 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(cPropertyIDSets, rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto CLEANUP;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto CLEANUP;

	// Check the return values
	for(i=0; i<m_pcPropertyInfoSets; i++)
	{
		if( m_prgPropertyInfoSets[i].rgPropertyInfos->dwFlags && 
			!VerifyGetPropInfo(i,TRUE,i,cPropertyIDSets,FALSE,FALSE) )
			goto CLEANUP;
		else if( !m_prgPropertyInfoSets[i].rgPropertyInfos->dwFlags &&
				 !VerifyGetPropInfoNotSupported(i,TRUE,i,cPropertyIDSets,FALSE) )
			goto CLEANUP;
	}

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	PROVIDER_FREE(rgPropertyIDSets);
	PROVIDER_FREE(rgPropertyIDs);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all DBINIT properties multiple times - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_55()
{
	ULONG		  cPropertyIDSets  = 100;
	DBPROPIDSET * rgPropertyIDSets = NULL;

	// Allocate memory
	rgPropertyIDSets = (DBPROPIDSET *) PROVIDER_ALLOC(cPropertyIDSets * sizeof(DBPROPIDSET));

	if( !rgPropertyIDSets )
		return TEST_FAIL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	for(ULONG i=0; i<cPropertyIDSets; i++)
	{
		rgPropertyIDSets[i].cPropertyIDs    = 0;
		rgPropertyIDSets[i].rgPropertyIDs   = NULL;
		rgPropertyIDSets[i].guidPropertySet = DBPROPSET_DATASOURCEINFO;
	}

	//Should fail gracefully 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(cPropertyIDSets, rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK))
		goto CLEANUP;

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	PROVIDER_FREE(rgPropertyIDSets);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all DBINIT properties IDs multiple times - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_56()
{
	ULONG		  cPropertyIDSets  = 1;
	DBPROPID *	  rgPropertyIDs    = NULL;
	DBPROPIDSET * rgPropertyIDSets = NULL;

	// Allocate memory
	rgPropertyIDSets = (DBPROPIDSET *) PROVIDER_ALLOC(cPropertyIDSets * sizeof(DBPROPIDSET));
	rgPropertyIDs    = (DBPROPID *) PROVIDER_ALLOC(1000 * sizeof(DBPROPID));

	if( !rgPropertyIDSets || !rgPropertyIDs )
		return TEST_FAIL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	//Get a DataSourceInfo property 
	for(ULONG i=0; i<1000; i++)
	{
		if (!SupportedProperty(&rgPropertyIDs[i],IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
			m_fSuccess = TEST_SKIPPED;
	}

	rgPropertyIDSets[0].cPropertyIDs    = 1000;
	rgPropertyIDSets[0].rgPropertyIDs   = &rgPropertyIDs[0];
	rgPropertyIDSets[0].guidPropertySet = DBPROPSET_DATASOURCEINFO;

	//Should fail gracefully 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(cPropertyIDSets, rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK))
		goto CLEANUP;

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	PROVIDER_FREE(rgPropertyIDSets);
	PROVIDER_FREE(rgPropertyIDs);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all properties with a NULL ppDescBuffer - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_57()
{
	// Assignments
	m_fSuccess = TEST_FAIL;

	//Should fail gracefully 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(0, NULL,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), S_OK))
		goto CLEANUP;

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo with all properties  with a NULL ppDescBuffer - DB_S_ERRORSOCCURRED
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_58()
{
	HRESULT		  Exphr			   = DB_S_ERRORSOCCURRED;
	ULONG		  cPropertyIDSets  = g_cDBProperties;
	DBPROPIDSET * rgPropertyIDSets = NULL;
	DBPROPID *	  rgPropertyIDs    = NULL;
	ULONG		  ulSupported	   = 0;

	// Allocate memory
	rgPropertyIDSets = (DBPROPIDSET *) PROVIDER_ALLOC(g_cDBProperties * sizeof(DBPROPIDSET));
	rgPropertyIDs    = (DBPROPID *) PROVIDER_ALLOC(g_cDBProperties * sizeof(DBPROPID));

	if( !rgPropertyIDSets || !rgPropertyIDs )
		return TEST_FAIL;

	// Assignments
	m_fSuccess = TEST_FAIL;

	ULONG i;
	for(i=0; i<g_cDBProperties; i++)
	{
		rgPropertyIDs[i] = g_rgDBProperties[i].dwPropertyID;

		rgPropertyIDSets[i].cPropertyIDs    = 1;
		rgPropertyIDSets[i].rgPropertyIDs   = &rgPropertyIDs[i];
		rgPropertyIDSets[i].guidPropertySet = *g_rgDBProperties[i].pGuidPropertySet;

		ulSupported = ulSupported + g_rgDBProperties[i].fSupported;
	}

	//Figure out the returncode
	if(!ulSupported)
		Exphr = DB_E_ERRORSOCCURRED;
	
	//Should fail gracefully 
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(cPropertyIDSets, rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), Exphr))
		goto CLEANUP;

	// Check the return values
	for(i=0; i<m_pcPropertyInfoSets; i++)
	{
		if( m_prgPropertyInfoSets[i].rgPropertyInfos->dwFlags && 
			!VerifyGetPropInfo(i,TRUE,i,cPropertyIDSets,FALSE,FALSE) )
			goto CLEANUP;
		else if( !m_prgPropertyInfoSets[i].rgPropertyInfos->dwFlags &&
				 !VerifyGetPropInfoNotSupported(i,TRUE,i,cPropertyIDSets,FALSE) )
			goto CLEANUP;
	}

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free the Properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	PROVIDER_FREE(rgPropertyIDSets);
	PROVIDER_FREE(rgPropertyIDs);

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc Call GetProperties then call SetProperties before Initialize - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_Parameters::Variation_59()
{
	TBEGIN;
	
	ULONG			cPropertySets  = 0;
	DBPROPSET *		rgPropertySets = NULL;

	IDBProperties *	pIDBProperties = NULL;
	IDBInitialize *	pIDBInitialize = NULL;

	// Get a clean DSO
	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	TESTC(VerifyInterface(pIDBProperties, IID_IDBInitialize, 
						DATASOURCE_INTERFACE, (IUnknown **)&pIDBInitialize));

	//Call GetProperties to get the defaults
	TESTC_(pIDBProperties->GetProperties(0,NULL,&m_pcPropertySets,&m_prgPropertySets), S_OK);

	// Get the Init Properties and Set them
	TESTC(GetInitProps(&cPropertySets, &rgPropertySets));
	TESTC_(pIDBProperties->SetProperties(cPropertySets, rgPropertySets), S_OK);
	TESTC_(pIDBInitialize->Initialize(),S_OK);
	TESTC_(pIDBInitialize->Uninitialize(),S_OK);
   
	// Set the defaults and Initialize
	TESTC_(pIDBProperties->SetProperties(m_pcPropertySets,m_prgPropertySets), S_OK);
	TEST4C_(pIDBInitialize->Initialize(), E_FAIL, DB_SEC_E_AUTH_FAILED,S_OK, DB_E_ERRORSOCCURRED);

CLEANUP:
	
	FreeProperties(&cPropertySets, &rgPropertySets);
	FreeProperties(&m_pcPropertySets, &m_prgPropertySets);

	SAFE_RELEASE(pIDBProperties);
	SAFE_RELEASE(pIDBInitialize);

	TRETURN;
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_Parameters::Terminate()
{
	// Release the objects
	SAFE_RELEASE(m_pIDBProperties);

	return(TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_GetPropertyInfoBulk)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_GetPropertyInfoBulk - IDBProperties::GetPropertyInfoBulk
//|	Created:		08/21/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_GetPropertyInfoBulk::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		if (!VerifyInterface(m_pThisTestModule->m_pIUnknown2, IID_IDBCreateCommand, 
								SESSION_INTERFACE, (IUnknown **)&m_pIDBCreateCommand))
			VerifyInterface(m_pThisTestModule->m_pIUnknown2, IID_IOpenRowset, 
									SESSION_INTERFACE, (IUnknown **)&m_pIOpenRowset);

		m_cPropertyIDSets=1;
		m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
		m_rgPropertyIDSets->cPropertyIDs=1;
		m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

		//Get the default values
		if(!g_fInitGetPropInfoDefault)
		{
			if(COMPARE(InitGetPropInfoDefault(),TRUE))
				g_fInitGetPropInfoDefault=TRUE;
			else
				return FALSE;
		}

		//Get the default values if we have not done it already
		if(!g_fInitGetPropDefault)
		{
			if(COMPARE(InitGetPropDefault(),TRUE))
				g_fInitGetPropDefault = TRUE;
			else
				return FALSE;
		}

		//Initialize command properties
		if(!COMPARE(InitCommandProperties(),TRUE))
			return FALSE;

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_DATASOURCEALL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_1()
{
	HRESULT Exphr = S_OK;

	//Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEALL;

	m_fSuccess=TEST_FAIL;

	if( (!g_rgDBProperties[IDX_CURRENTCATALOG].fSupported)      &&
		(!g_rgDBProperties[IDX_MULTIPLECONNECTIONS].fSupported) &&
		(!g_rgDBProperties[IDX_RESETDATASOURCE].fSupported)     &&
		(!g_ulExtraDSOProp) )
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Data Source property group
	TESTC_(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr);

	// Compare the number of PropInfoSets returned
	TESTC((g_ulExtraDSOProp+1) == m_pcPropertyInfoSets);

	//Verify all the properties in the property set
	if( !VerifyPropInfoSets(DBPROPSET_DATASOURCE) )
		odtLog <<L"GetPropInfoALL(DBPROPSET_DATASOURCEALL) did not return expected value." <<ENDL;

	if( g_ulExtraDSOProp && (m_pcPropertyInfoSets != (1+g_ulExtraDSOProp)) )
		odtLog <<L"GetPropertyInfo with DATASOURCEALL returned the wrong info." <<ENDL;

	//Check to see if the pointers are NULL on ERROR
	if( Exphr == DB_E_ERRORSOCCURRED ) 
	{
		TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
		TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
		TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEALL);
		TESTC(!m_ppDescBuffer);
	}

	m_fSuccess = TEST_PASS;

CLEANUP:
	
	//Free memory from GetPropertyInfo
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_DATASOURCEINFOALL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_2()
{
	HRESULT	Exphr = S_OK;

	//Assignments
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFOALL;
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Data Source Information property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraDSOInfoProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
 	if(!VerifyPropInfoSets(DBPROPSET_DATASOURCEINFO))
		odtLog<<L"GetPropInfoALL(DBPROPSET_DATASOURCEINFOALL) did not return expected value\n";

	if((g_ulExtraDSOInfoProp) && (m_pcPropertyInfoSets != (1+g_ulExtraDSOInfoProp)))
		odtLog<<L"GetPropertyInfo with DATASOURCEINFOALL returned the wrong info\n";

	if( (g_ulExtraDSOInfoProp) && 
		((m_prgPropertyInfoSets[0].guidPropertySet == DBPROPSET_PROVIDERDATASOURCEINFO) || 
		 (m_prgPropertyInfoSets[1].guidPropertySet == DBPROPSET_PROVIDERDATASOURCEINFO)) )
	{
		if(!VerifyPropInfoSets(DBPROPSET_PROVIDERDATASOURCEINFO))
			odtLog<<L"GetPropInfoALL(DBPROPSET_DATASOURCEINFOALL) did not return expected value\n";
	}

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_DBINITALL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_3()
{
	HRESULT	Exphr = S_OK;

	//Assignments
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DBINITALL;
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Initialization property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraDBInitProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
	if(!VerifyPropInfoSets(DBPROPSET_DBINIT))
		odtLog<<L"GetPropInfoALL(DBPROPSET_DBINITALL) did not return expected value\n";

	if((g_ulExtraDBInitProp) && (m_pcPropertyInfoSets != (1+g_ulExtraDBInitProp)))
		odtLog<<L"GetPropertyInfo with DBINITALL returned the wrong info\n";

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_ROWSETALL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_4()
{
	HRESULT	Exphr = S_OK;

	//Assignments
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_ROWSETALL;
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_ROWSET_START,IDX_ROWSET_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Rowset property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraROWProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
	if(!VerifyPropInfoSets(DBPROPSET_ROWSET))
		odtLog<<L"GetPropInfoALL(DBPROPSET_ROWSETALL) did not return expected values\n";

	if((g_ulExtraROWProp) && (m_pcPropertyInfoSets != (1+g_ulExtraROWProp)))
		odtLog<<L"GetPropertyInfo with ROWSETALL returned the wrong info\n";

	if( (g_ulExtraROWProp) && 
		((m_prgPropertyInfoSets[0].guidPropertySet == DBPROPSET_PROVIDERROWSET) || 
		 (m_prgPropertyInfoSets[1].guidPropertySet == DBPROPSET_PROVIDERROWSET)) )
	{
		if(!VerifyPropInfoSets(DBPROPSET_PROVIDERROWSET))
			odtLog<<L"GetPropInfoALL(DBPROPSET_PROVIDERROWSET) did not return expected value\n";
	}

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_SESSIONALL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_5()
{
	HRESULT Exphr = S_OK;

	//Assignments
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_SESSIONALL;
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_SESSION_START,IDX_SESSION_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Session property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraSESProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
	if(!VerifyPropInfoSets(DBPROPSET_SESSION))
		odtLog<<L"GetPropInfoALL(DBPROPSET_SESSIONALL) did not return expected values\n";

	if((g_ulExtraSESProp) && (m_pcPropertyInfoSets != (1+g_ulExtraSESProp)))
		odtLog<<L"GetPropertyInfo with SESSIONALL returned the wrong info\n";

	//Check to see if the pointers are NULL on ERROR
	if ((Exphr == DB_E_ERRORSOCCURRED) && 
		((m_prgPropertyInfoSets->rgPropertyInfos) ||
		 (m_prgPropertyInfoSets->cPropertyInfos)  ||
		 (m_ppDescBuffer)))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc GetPropertyInfo cPropertyIDSets = 0
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_6()
{
	//Assignments
	m_cPropertyIDSets=0;
	m_fSuccess=TEST_FAIL;

	//Get all properties in Rowset property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, NULL,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK))
		goto END;

	//Verify all the properties in the property set
	if(!VerifyPropInfoSets(DBPROPSET_COLUMN))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_DATASOURCE))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

 	if(!VerifyPropInfoSets(DBPROPSET_DATASOURCEINFO))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_DBINIT))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_INDEX))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_ROWSET))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_SESSION))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_TABLE))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_TRUSTEE))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	if(!VerifyPropInfoSets(DBPROPSET_VIEW))
		odtLog<<L"GetPropInfoALL(0, NULL) did not return expected value\n";

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with multiple Property Set ALL Guids
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_7()
{
	HRESULT Exphr = DB_S_ERRORSOCCURRED;

	//Assignments
	m_cPropertyIDSets=2;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFOALL;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_DBINITALL;
	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if( SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END) &&
		SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = S_OK;

	if( !SupportedProperty(m_rgPropertyIDs,IDX_DATASOURCEINFO_START,IDX_DATASOURCEINFO_END) &&
		!SupportedProperty(m_rgPropertyIDs,IDX_DBINIT_START,IDX_DBINIT_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Rowset property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraDSOInfoProp+1+g_ulExtraDBInitProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
 	if(!VerifyPropInfoSets(DBPROPSET_DATASOURCEINFO))
		odtLog<<L"GetPropInfoALL(DBPROPSET_DATASOURCEINFOALL) did not return expected value\n";

	if( (g_ulExtraDSOInfoProp) && 
		(m_pcPropertyInfoSets != (1+g_ulExtraDSOInfoProp+1+g_ulExtraDBInitProp)) )
		odtLog<<L"GetPropertyInfo with DATASOURCEINFOALL and DBINITALL returned the wrong info\n";

	if( (g_ulExtraDSOInfoProp) && 
		((m_prgPropertyInfoSets[0].guidPropertySet == DBPROPSET_PROVIDERDATASOURCEINFO) || 
		 (m_prgPropertyInfoSets[1].guidPropertySet == DBPROPSET_PROVIDERDATASOURCEINFO)) )
	{
		if(!VerifyPropInfoSets(DBPROPSET_PROVIDERDATASOURCEINFO))
			odtLog<<L"GetPropInfoALL(DBPROPSET_DATASOURCEINFOALL) did not return expected value\n";
	}

	if(!VerifyPropInfoSets(DBPROPSET_DBINIT))
		odtLog<<L"GetPropInfoALL(DBPROPSET_DBINITALL) did not return expected value\n";

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with multiple Property Set guid first
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_8()
{
	//Assignments
	m_cPropertyIDSets=4;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFOALL;
	m_rgPropertyIDSets[0].cPropertyIDs=1;
	m_rgPropertyIDs[0]=DBPROP_ACTIVESESSIONS;
	m_rgPropertyIDSets[0].rgPropertyIDs=&m_rgPropertyIDs[0];

	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertyIDSets[1].cPropertyIDs=1;
	m_rgPropertyIDs[1]=DBPROP_USERNAME;
	m_rgPropertyIDSets[1].rgPropertyIDs=&m_rgPropertyIDs[1];

	m_rgPropertyIDSets[2].guidPropertySet=DBPROPSET_ROWSET;
	m_rgPropertyIDSets[2].cPropertyIDs=1;
	m_rgPropertyIDs[2]=DBPROP_BOOKMARKS;
	m_rgPropertyIDSets[2].rgPropertyIDs=&m_rgPropertyIDs[2];

	m_rgPropertyIDSets[3].guidPropertySet=DBPROPSET_COLUMN;
	m_rgPropertyIDSets[3].cPropertyIDs=1;
	m_rgPropertyIDs[3]=DBPROP_COL_NULLABLE;
	m_rgPropertyIDSets[3].rgPropertyIDs=&m_rgPropertyIDs[3];

	m_fSuccess=TEST_FAIL;

	//Get all properties in Rowset property group
	TESTC_(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG);

	TESTC(m_pcPropertyInfoSets == 0);
	TESTC(m_prgPropertyInfoSets == NULL);
	TESTC(m_ppDescBuffer == NULL);

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with multiple Property Set guid second
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_9()
{
	//Assignments
	m_cPropertyIDSets=4;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertyIDSets[0].cPropertyIDs=1;
	m_rgPropertyIDs[0]=DBPROP_USERNAME;
	m_rgPropertyIDSets[0].rgPropertyIDs=&m_rgPropertyIDs[1];

	m_rgPropertyIDSets[1].guidPropertySet=DBPROPSET_DATASOURCEINFOALL;
	m_rgPropertyIDSets[1].cPropertyIDs=1;
	m_rgPropertyIDs[1]=DBPROP_ACTIVESESSIONS;
	m_rgPropertyIDSets[1].rgPropertyIDs=&m_rgPropertyIDs[0];

	m_rgPropertyIDSets[2].guidPropertySet=DBPROPSET_ROWSET;
	m_rgPropertyIDSets[2].cPropertyIDs=1;
	m_rgPropertyIDs[2]=DBPROP_BOOKMARKS;
	m_rgPropertyIDSets[2].rgPropertyIDs=&m_rgPropertyIDs[2];

	m_rgPropertyIDSets[3].guidPropertySet=DBPROPSET_COLUMN;
	m_rgPropertyIDSets[3].cPropertyIDs=1;
	m_rgPropertyIDs[3]=DBPROP_COL_NULLABLE;
	m_rgPropertyIDSets[3].rgPropertyIDs=&m_rgPropertyIDs[3];

	m_fSuccess=TEST_FAIL;

	//Get all properties in Rowset property group
	TESTC_(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), E_INVALIDARG);

	TESTC(m_pcPropertyInfoSets  == 0);
	TESTC(m_prgPropertyInfoSets == NULL);

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo cPropertyIDSets = 0 before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_10()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=0;
	m_fSuccess = TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, NULL,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK);

	//Verify all the properties in the property set
	TESTC(VerifyPropInfoSets(DBPROPSET_DBINIT));

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo cPropertyIDSets = 0 without ppDescBuffer before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_11()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=0;
	m_fSuccess = TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, NULL,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), S_OK);

	//Verify all the properties in the property set
	TESTC(VerifyPropInfoSets(DBPROPSET_DBINIT));

	m_fSuccess = TEST_PASS;

CLEANUP:
	
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_COLUMN before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_12()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_COLUMN;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_COLUMN);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_COLUMN);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_COLUMNALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_COLUMNALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_COLUMNALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_DATASOURCE before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_13()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCE;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCE);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCE);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_DATASOURCEINFO before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_14()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFO;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEINFO);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEINFO);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_DATASOURCEINFOALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEINFOALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_DATASOURCEINFOALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_INDEX before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_15()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_INDEX;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_INDEX);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_INDEX);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_INDEXALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_INDEXALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_INDEXALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_SESSION before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_16()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_SESSION;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_SESSION);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_SESSION);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_SESSIONALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_SESSIONALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_SESSIONALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_TABLE before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_17()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_TABLE;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TABLE);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TABLE);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_TABLEALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TABLEALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TABLEALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_TRUSTEE before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_18()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_TRUSTEE;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TRUSTEE);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TRUSTEE);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_TRUSTEEALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TRUSTEEALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_TRUSTEEALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_VIEW before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_19()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_VIEW;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_VIEW);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_VIEW);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	// Assignments
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_VIEWALL;

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_VIEWALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_VIEWALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with DBPROPSET_CONSTRAINTALL before Initialize
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_20()
{
	IDBProperties *	pIDBProperties = NULL;
	
	// Assignments
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;
	m_rgPropertyIDSets[0].guidPropertySet=DBPROPSET_CONSTRAINTALL;

	m_fSuccess=TEST_FAIL;

	TESTC_(GetModInfo()->CreateProvider(NULL,IID_IDBProperties,(IUnknown**)&pIDBProperties), S_OK);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_CONSTRAINTALL);
	TESTC(!m_ppDescBuffer);

	//Free the properties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

	//Get all properties in Rowset property group
	TESTC_(pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, NULL), DB_E_ERRORSOCCURRED);

	// Check the output
	TESTC(m_pcPropertyInfoSets == 1);
	TESTC(m_prgPropertyInfoSets != NULL);
	TESTC(m_prgPropertyInfoSets->cPropertyInfos  == 0);
	TESTC(m_prgPropertyInfoSets->rgPropertyInfos == NULL);
	TESTC(m_prgPropertyInfoSets->guidPropertySet == DBPROPSET_CONSTRAINTALL);

	m_fSuccess = TEST_PASS;

CLEANUP:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	SAFE_RELEASE(pIDBProperties);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc Call GetPropertyInfo with all combinations of multiple Property Set guids
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_GetPropertyInfoBulk::Variation_21()
{
	const GUID * pGuidPropertySet[] = { &DBPROPSET_COLUMN, &DBPROPSET_COLUMN, 
		                                &DBPROPSET_DATASOURCE, &DBPROPSET_DATASOURCEINFO, 
										&DBPROPSET_DBINIT, &DBPROPSET_INDEX,  
										&DBPROPSET_ROWSET, &DBPROPSET_SESSION,  
										&DBPROPSET_TABLE, &DBPROPSET_TRUSTEE, 
										&DBPROPSET_VIEW };
	
	const GUID * pGuidPropertySetAll[] = { &DBPROPSET_COLUMNALL, &DBPROPSET_CONSTRAINTALL, 
									       &DBPROPSET_DATASOURCEALL, &DBPROPSET_DATASOURCEINFOALL, 
										   &DBPROPSET_DBINITALL, &DBPROPSET_INDEXALL,  
										   &DBPROPSET_ROWSETALL, &DBPROPSET_SESSIONALL,  
										   &DBPROPSET_TABLEALL, &DBPROPSET_TRUSTEEALL, 
										   &DBPROPSET_VIEWALL };

	//Assignments
	m_cPropertyIDSets=2;					    
	m_rgPropertyIDSets[0].cPropertyIDs=0;
	m_rgPropertyIDSets[0].rgPropertyIDs=NULL;

	m_rgPropertyIDSets[1].cPropertyIDs=0;
	m_rgPropertyIDSets[1].rgPropertyIDs=NULL;

	m_fSuccess=TEST_FAIL;

	for(ULONG ulDex=0; ulDex < NUMELEM(pGuidPropertySet); ulDex++)
	{
		//Assignments
		m_rgPropertyIDSets[0].guidPropertySet=*pGuidPropertySet[ulDex];
		m_rgPropertyIDSets[1].guidPropertySet=*pGuidPropertySetAll[ulDex];
		
		//Get all properties in Rowset property group
		TESTC_(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG);

		TESTC(m_pcPropertyInfoSets == 0);
		TESTC(m_prgPropertyInfoSets == NULL);
		TESTC(m_ppDescBuffer == NULL);
	
		//Free memory from GetPropertyInfo
		FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);

		//Assignments
		m_rgPropertyIDSets[0].guidPropertySet=*pGuidPropertySetAll[ulDex];
		m_rgPropertyIDSets[1].guidPropertySet=*pGuidPropertySet[ulDex];
		
		//Get all properties in Rowset property group
		TESTC_(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG);

		TESTC(m_pcPropertyInfoSets == 0);
		TESTC(m_prgPropertyInfoSets == NULL);
		TESTC(m_ppDescBuffer == NULL);
	
		//Free memory from GetPropertyInfo
		FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	}

	m_fSuccess = TEST_PASS;

CLEANUP:

	//Free memory from GetPropertyInfo
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}




// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc Property Set Guid = DBPROPSET_STREAMALL
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_GetPropertyInfoBulk::Variation_22()
{ 
	HRESULT Exphr = S_OK;

	//Assignments
	m_rgPropertyIDSets->guidPropertySet=DBPROPSET_STREAMALL;
	m_cPropertyIDSets=1;
	m_rgPropertyIDSets->cPropertyIDs=0;
	m_rgPropertyIDSets->rgPropertyIDs=NULL;
	m_fSuccess=TEST_FAIL;

	//Figure out the returncode
	if(!SupportedProperty(m_rgPropertyIDs,IDX_STREAM_START,IDX_STREAM_END))
		Exphr = DB_E_ERRORSOCCURRED;

	//Get all properties in Session property group
	if(!CHECK(m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
			&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), Exphr))
		goto END;

	//Check the ppDescBuffer
	if(FAILED(Exphr) && !COMPARE(m_ppDescBuffer, NULL))
		goto END;

	// Compare the number of PropInfoSets returned
	COMPARE(1+g_ulExtraSESProp, m_pcPropertyInfoSets);

	//Verify all the properties in the property set
	if(!VerifyPropInfoSets(DBPROPSET_STREAM))
		odtLog<<L"GetPropInfoALL(DBPROPSET_STREAMALL) did not return expected values\n";

	if((g_ulExtraSESProp) && (m_pcPropertyInfoSets != (1+g_ulExtraSESProp)))
		odtLog<<L"GetPropertyInfo with STREAMALL returned the wrong info\n";

	//Check to see if the pointers are NULL on ERROR
	if ((Exphr == DB_E_ERRORSOCCURRED) && 
		((m_prgPropertyInfoSets->rgPropertyInfos) ||
		 (m_prgPropertyInfoSets->cPropertyInfos)  ||
		 (m_ppDescBuffer)))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free memory from GetProperties
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
} 
// }} TCW_VAR_PROTOTYPE_END


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_GetPropertyInfoBulk::Terminate()
{
	// Release the Malloc Pointer
	SAFE_RELEASE(m_pIDBProperties);
	SAFE_RELEASE(m_pIDBCreateCommand);
	SAFE_RELEASE(m_pIOpenRowset);

	return(TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_SetPropertiesBulk)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_SetPropertiesBulk - IDBProperties::SetPropertiesBulk
//|	Created:		08/21/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetPropertiesBulk::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		//Get the default values
		if(!g_fInitGetPropInfoDefault)
		{
			if(COMPARE(InitGetPropInfoDefault(),TRUE))
				g_fInitGetPropInfoDefault=TRUE;
			else
				return FALSE;
		}

		//Get the default values if we have not done it already
		if(!g_fInitGetPropDefault)
		{
			if(COMPARE(InitGetPropDefault(),TRUE))
				g_fInitGetPropDefault = TRUE;
			else
				return FALSE;
		}

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Multiple property sets, no property sets supported or settable
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_1()
{
	//Assignments
	memset(&m_rgProperties,0,(sizeof(DBPROP)*(sizeof(m_rgProperties)/sizeof(m_rgProperties[0]))));
	m_cPropertySets=3;

	m_rgPropertySets[0].guidPropertySet=DBPROPSET_COLUMN;
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties=&m_rgProperties[0];
	m_rgProperties[0].dwPropertyID=DBPROP_COL_NULLABLE;
	m_rgProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[0].vValue.vt=VT_BOOL;
	V_BOOL(&m_rgProperties[0].vValue)=VARIANT_FALSE;

	//After getting a data source object or the enumerator is initialized
	//properties cannot be set in the initialization property group.
	m_rgPropertySets[1].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertySets[1].cProperties=1;
	m_rgPropertySets[1].rgProperties=&m_rgProperties[1];
	m_rgProperties[1].dwPropertyID=DBPROP_INIT_TIMEOUT;
	m_rgProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[1].vValue.vt=VT_I4;
	m_rgProperties[1].vValue.lVal=5;

	m_rgPropertySets[2].guidPropertySet=DBPROPSET_ROWSET;
	m_rgPropertySets[2].cProperties=1;
	m_rgPropertySets[2].rgProperties=&m_rgProperties[2];
	m_rgProperties[2].dwPropertyID=DBPROP_BOOKMARKS;
	m_rgProperties[2].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[2].vValue.vt=VT_BOOL;
	V_BOOL(&m_rgProperties[2].vValue)=VARIANT_FALSE;

	m_fSuccess=TEST_FAIL;

	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(m_cPropertySets,
			m_rgPropertySets), DB_E_ERRORSOCCURRED))
		goto END;

	//Check the return property ids and status
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,DBPROP_COL_NULLABLE))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwPropertyID,DBPROP_INIT_TIMEOUT))
		goto END;
	if(!COMPARE(m_rgPropertySets[2].rgProperties->dwPropertyID,DBPROP_BOOKMARKS))
		goto END;

	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;
	if(!COMPARE(m_rgPropertySets[2].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc Multiple property sets, multiple properties, same property set twice
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_2()
{
	BOOL		 fCatSupport=FALSE;
	BOOL		 fUIDSupport=FALSE;
	HRESULT		 Exphr=DB_E_ERRORSOCCURRED;
	DBPROPSTATUS dbPropStatus=DBPROPSTATUS_NOTSUPPORTED;

	//Loop to find a Settable DataSource Property
	for(ULONG i=0; i<g_cDBProperties; i++)
	{
		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DATASOURCE) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_CURRENTCATALOG) &&
			(g_rgDBProperties[i].fSupported))
			fCatSupport = TRUE;

		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DBINIT) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_AUTH_USERID) &&
			(g_rgDBProperties[i].fSupported))
			fUIDSupport = TRUE;		
	}
	
	// Figure out the HRESULT
	if (fCatSupport) {
		Exphr = DB_S_ERRORSOCCURRED;
		dbPropStatus = DBPROPSTATUS_OK;
	}

	//Assignments
	memset(&m_rgProperties,0,(sizeof(DBPROP)*(sizeof(m_rgProperties)/sizeof(m_rgProperties[0]))));
	m_cPropertySets=4;

	m_rgPropertySets[0].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties=&m_rgProperties[0];
	m_rgProperties[0].dwPropertyID=DBPROP_CURRENTCATALOG;
	m_rgProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[0].vValue.vt=VT_EMPTY;
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt)
	{
		m_rgProperties[0].vValue.vt=VT_BSTR;
		V_BSTR(&m_rgProperties[0].vValue)=SysAllocString(g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.bstrVal);
	}

	m_rgPropertySets[1].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets[1].cProperties=1;
	m_rgPropertySets[1].rgProperties=&m_rgProperties[1];
	m_rgProperties[1].dwPropertyID=DBPROP_CURRENTCATALOG;
	m_rgProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[1].vValue.vt=VT_EMPTY;
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
	{
		m_rgProperties[1].vValue.vt=VT_BSTR;
		V_BSTR(&m_rgProperties[1].vValue)=SysAllocString(g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.bstrVal);
	}

	m_rgPropertySets[2].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertySets[2].cProperties=1;
	m_rgPropertySets[2].rgProperties=&m_rgProperties[2];
	m_rgProperties[2].dwPropertyID=DBPROP_INIT_TIMEOUT;
	m_rgProperties[2].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[2].vValue.vt=VT_I4;
	m_rgProperties[2].vValue.lVal=5;

	m_rgPropertySets[3].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertySets[3].cProperties=1;
	m_rgPropertySets[3].rgProperties=&m_rgProperties[3];
	m_rgProperties[3].dwPropertyID=DBPROP_AUTH_USERID;
	m_rgProperties[3].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[3].vValue.vt=VT_EMPTY;
	if (fUIDSupport && g_rgDBProperties[IDX_AUTH_USERID].vDefault.vt) 
	{
		m_rgProperties[3].vValue.vt=VT_BSTR;
		V_BSTR(&m_rgProperties[3].vValue)=SysAllocString(g_rgDBProperties[IDX_AUTH_USERID].vDefault.bstrVal);
	}

	m_fSuccess=TEST_FAIL;

	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(m_cPropertySets, m_rgPropertySets), Exphr))
		goto END;

	//Check the return property ids and status
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG))
		goto END;
	if(!COMPARE(m_rgPropertySets[2].rgProperties->dwPropertyID,DBPROP_INIT_TIMEOUT))
		goto END;
	if(!COMPARE(m_rgPropertySets[3].rgProperties->dwPropertyID,DBPROP_AUTH_USERID))
		goto END;

	// DataSource Property Status depends on Support
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,dbPropStatus))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwStatus,dbPropStatus))
		goto END;

	// Initialize Properties after Initialized
	if(!COMPARE(m_rgPropertySets[2].rgProperties->dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;
	if(!COMPARE(m_rgPropertySets[3].rgProperties->dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free string previously allocated by SysAllocString
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
		SysFreeString(V_BSTR(&m_rgProperties[0].vValue));
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt)
		SysFreeString(V_BSTR(&m_rgProperties[1].vValue));
	if (fUIDSupport && g_rgDBProperties[IDX_AUTH_USERID].vDefault.vt) 
		SysFreeString(V_BSTR(&m_rgProperties[3].vValue));

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc Multiple property sets, multiple properties
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_3()
{
	BOOL		 fCatSupport=FALSE;
	BOOL		 fUIDSupport=FALSE;
	HRESULT		 Exphr=DB_E_ERRORSOCCURRED;
	DBPROPSTATUS dbPropStatus=DBPROPSTATUS_NOTSUPPORTED;

	//Loop to find a Settable DataSource Property
	for(ULONG i=0; i<g_cDBProperties; i++)
	{
		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DATASOURCE) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_CURRENTCATALOG) &&
			(g_rgDBProperties[i].fSupported))
			fCatSupport = TRUE;

		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DBINIT) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_AUTH_USERID) &&
			(g_rgDBProperties[i].fSupported))
			fUIDSupport = TRUE;		
	}
	
	// Figure out the HRESULT
	if (fCatSupport) {
		Exphr = DB_S_ERRORSOCCURRED;
		dbPropStatus = DBPROPSTATUS_OK;
	}

	//Assignments
	memset(&m_rgProperties,0,(sizeof(DBPROP)*(sizeof(m_rgProperties)/sizeof(m_rgProperties[0]))));
	m_cPropertySets=2;

	m_rgPropertySets[0].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties=&m_rgProperties[0];
	m_rgProperties[0].dwPropertyID=DBPROP_CURRENTCATALOG;
	m_rgProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[0].vValue.vt=VT_EMPTY;
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
	{
		m_rgProperties[0].vValue.vt=VT_BSTR;
		V_BSTR(&m_rgProperties[0].vValue)=SysAllocString(g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.bstrVal);
	}

	m_rgPropertySets[1].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertySets[1].cProperties=2;
	m_rgPropertySets[1].rgProperties=&m_rgProperties[1];
	m_rgProperties[1].dwPropertyID=DBPROP_INIT_TIMEOUT;
	m_rgProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[1].vValue.vt=VT_I4;
	m_rgProperties[1].vValue.lVal=5;

	m_rgProperties[2].dwPropertyID=DBPROP_AUTH_USERID;
	m_rgProperties[2].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[2].vValue.vt=VT_BSTR;
	if (fUIDSupport) V_BSTR(&m_rgProperties[2].vValue)=SysAllocString((LPOLESTR)L"sa");

	m_fSuccess=TEST_FAIL;

	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(m_cPropertySets,m_rgPropertySets), Exphr))
		goto END;

	//Check the return property ids and status
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG))
		goto END;
	if(!COMPARE(m_rgProperties[1].dwPropertyID,DBPROP_INIT_TIMEOUT))
		goto END;
	if(!COMPARE(m_rgProperties[2].dwPropertyID,DBPROP_AUTH_USERID))
		goto END;

	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,dbPropStatus))
		goto END;
	if(!COMPARE(m_rgProperties[1].dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;
	if(!COMPARE(m_rgProperties[2].dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free string previously allocated by SysAllocString
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
		SysFreeString(V_BSTR(&m_rgProperties[0].vValue));
	if (fUIDSupport) SysFreeString(V_BSTR(&m_rgProperties[2].vValue));

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc Multiple property sets, further testing for DBPROP_CURRENTCATALOG
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_4()
{
	BOOL		 fCatSupport=FALSE;
	BOOL		 fUIDSupport=FALSE;
	BOOL		 fTmpValue=g_rgDBProperties[IDX_CURRENTCATALOG].fSettable;
	HRESULT		 Exphr=DB_E_ERRORSOCCURRED;
	DBPROPSTATUS dbPropStatus=DBPROPSTATUS_BADVALUE;

	// Check to see if ReadOnly
	WritableProperty(IDX_CURRENTCATALOG);

	//Loop to find a Settable DataSource Property
	for(ULONG i=0; i<g_cDBProperties; i++)
	{
		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DATASOURCE) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_CURRENTCATALOG) &&
			(g_rgDBProperties[i].fSupported))
			fCatSupport = TRUE;

		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DBINIT) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_AUTH_USERID) &&
			(g_rgDBProperties[i].fSupported))
			fUIDSupport = TRUE;		
	}
	
	// Figure out the HRESULT and STATUS
	if (!fCatSupport)
		dbPropStatus = DBPROPSTATUS_NOTSUPPORTED;

	if ((fCatSupport) && (!g_rgDBProperties[IDX_CURRENTCATALOG].fSettable))
		dbPropStatus = DBPROPSTATUS_NOTSETTABLE;

	//Assignments
	memset(&m_rgProperties,0,(sizeof(DBPROP)*(sizeof(m_rgProperties)/sizeof(m_rgProperties[0]))));
	m_cPropertySets=2;

	m_rgPropertySets[0].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties=&m_rgProperties[0];
	m_rgProperties[0].dwPropertyID=DBPROP_CURRENTCATALOG;
	m_rgProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[0].vValue.vt=VT_BSTR;
	if (fCatSupport) V_BSTR(&m_rgProperties[0].vValue)=SysAllocString((LPOLESTR)L"a");
	if (fCatSupport) *(m_rgProperties[0].vValue.bstrVal)=L'a';

	m_rgPropertySets[1].guidPropertySet=DBPROPSET_DBINIT;
	m_rgPropertySets[1].cProperties=2;
	m_rgPropertySets[1].rgProperties=&m_rgProperties[1];
	m_rgProperties[1].dwPropertyID=DBPROP_INIT_TIMEOUT;
	m_rgProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[1].vValue.vt=VT_I4;
	m_rgProperties[1].vValue.lVal=5;

	m_rgProperties[2].dwPropertyID=DBPROP_AUTH_USERID;
	m_rgProperties[2].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[2].vValue.vt=VT_BSTR;
	if (fUIDSupport) V_BSTR(&m_rgProperties[2].vValue)=SysAllocString((LPOLESTR)L"sa");

	m_fSuccess=TEST_FAIL;

	//Set properties
	m_hr=m_pIDBProperties->SetProperties(m_cPropertySets,m_rgPropertySets);

	// Check the return value (some providers allow bad values
	if(SUCCEEDED(m_hr)) {
		CHECK(m_hr, DB_S_ERRORSOCCURRED);
		dbPropStatus=DBPROPSTATUS_OK;
	}
	else
		CHECK(m_hr, Exphr);

	//Check the return property ids and status
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG))
		goto END;
	if(!COMPARE(m_rgProperties[1].dwPropertyID,DBPROP_INIT_TIMEOUT))
		goto END;
	if(!COMPARE(m_rgProperties[2].dwPropertyID,DBPROP_AUTH_USERID))
		goto END;

	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,dbPropStatus))
		goto END;
	if(!COMPARE(m_rgProperties[1].dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;
	if(!COMPARE(m_rgProperties[2].dwStatus,DBPROPSTATUS_NOTSETTABLE))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free string previously allocated by SysAllocString
	if (fCatSupport) SysFreeString(V_BSTR(&m_rgProperties[0].vValue));
	if (fUIDSupport) SysFreeString(V_BSTR(&m_rgProperties[2].vValue));

	// Set back to the default
	g_rgDBProperties[IDX_CURRENTCATALOG].fSettable=fTmpValue;

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc Multiple property sets, first fails, second successful
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_5()
{
	BOOL		 fCatSupport=FALSE;
	HRESULT		 Exphr=DB_E_ERRORSOCCURRED;
	DBPROPSTATUS dbPropStatus=DBPROPSTATUS_NOTSUPPORTED;

	//Loop to find a Settable DataSource Property
	for(ULONG i=0; i<g_cDBProperties; i++)
	{
		if ((*g_rgDBProperties[i].pGuidPropertySet == DBPROPSET_DATASOURCE) && 
			(g_rgDBProperties[i].dwPropertyID == DBPROP_CURRENTCATALOG) &&
			(g_rgDBProperties[i].fSupported))
			fCatSupport = TRUE;
	}
	
	// Figure out the HRESULT
	if (fCatSupport) {
		Exphr = DB_S_ERRORSOCCURRED;
		dbPropStatus = DBPROPSTATUS_OK;
	}

	//Assignments
	memset(&m_rgProperties,0,(sizeof(DBPROP)*(sizeof(m_rgProperties)/sizeof(m_rgProperties[0]))));
	m_cPropertySets=2;

	m_rgPropertySets[0].guidPropertySet=DBPROPSET_COLUMN;
	m_rgPropertySets[0].cProperties=1;
	m_rgPropertySets[0].rgProperties=&m_rgProperties[0];
	m_rgProperties[0].dwPropertyID=DBPROP_COL_NULLABLE;
	m_rgProperties[0].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[0].vValue.vt=VT_BOOL;
	V_BOOL(&m_rgProperties[0].vValue)=VARIANT_FALSE;

	m_rgPropertySets[1].guidPropertySet=DBPROPSET_DATASOURCE;
	m_rgPropertySets[1].cProperties=1;
	m_rgPropertySets[1].rgProperties=&m_rgProperties[1];
	m_rgProperties[1].dwPropertyID=DBPROP_CURRENTCATALOG;
	m_rgProperties[1].dwOptions=DBPROPOPTIONS_REQUIRED;
	m_rgProperties[1].vValue.vt=VT_EMPTY;
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
	{
		m_rgProperties[1].vValue.vt=VT_BSTR;
		V_BSTR(&m_rgProperties[1].vValue)=SysAllocString(g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.bstrVal);
	}

	m_fSuccess=TEST_FAIL;

	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(m_cPropertySets,m_rgPropertySets), Exphr))
		goto END;

	//Check the return property ids and status
	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwPropertyID,DBPROP_COL_NULLABLE))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwPropertyID,DBPROP_CURRENTCATALOG))
		goto END;

	if(!COMPARE(m_rgPropertySets[0].rgProperties->dwStatus,DBPROPSTATUS_NOTSUPPORTED))
		goto END;
	if(!COMPARE(m_rgPropertySets[1].rgProperties->dwStatus,dbPropStatus))
		goto END;

	m_fSuccess = TEST_PASS;

END:
	//Free string previously allocated by SysAllocString
	if (fCatSupport && g_rgDBProperties[IDX_CURRENTCATALOG].vDefault.vt) 
		SysFreeString(V_BSTR(&m_rgProperties[1].vValue));

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with 0 and NULL
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_6()
{
	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(0, NULL), S_OK))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc SetProperties with 0 and VALID
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetPropertiesBulk::Variation_7()
{
	//Set properties
	if(!CHECK(m_pIDBProperties->SetProperties(0, m_rgPropertySets), S_OK))
		goto END;

	m_fSuccess = TEST_PASS;

END:

	return m_fSuccess;
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetPropertiesBulk::Terminate()
{
	// Release the Malloc Pointer
	SAFE_RELEASE(m_pIDBProperties);

	return(TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_SetProperties)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_SetProperties - set all supported properties
//|	Created:		09/19/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetProperties::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		//Get the default values
		if(!g_fInitGetPropInfoDefault)
		{
			if(COMPARE(InitGetPropInfoDefault(),TRUE))
				g_fInitGetPropInfoDefault=TRUE;
			else
				return FALSE;
		}

		//Get the default values if we have not done it already
		if(!g_fInitGetPropDefault)
		{
			if(COMPARE(InitGetPropDefault(),TRUE))
				g_fInitGetPropDefault = TRUE;
			else
				return FALSE;
		}

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACTIVESESSIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_1()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ACTIVESESSIONS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ACTIVESESSIONS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNABORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_2()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ASYNCTXNABORT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ASYNCTXNABORT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_3()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ASYNCTXNCOMMIT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ASYNCTXNCOMMIT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BYREFACCESSORS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_4()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BYREFACCESSORS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BYREFACCESSORS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGLOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_5()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGLOCATION);

	TESTC(VerifyProperty(IDX_CATALOGLOCATION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGTERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_6()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGTERM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CATALOGTERM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_7()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGUSAGE);

	//For this property, do not request IReadData on the rowset
	TESTC(VerifyProperty(IDX_CATALOGUSAGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNDEFINITION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_8()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNDEFINITION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNDEFINITION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_9()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CONCATNULLBEHAVIOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CONCATNULLBEHAVIOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCENAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_10()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCENAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCENAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_11()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCEREADONLY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCEREADONLY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_12()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DBMSNAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DBMSNAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_13()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DBMSVER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DBMSVER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DSOTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_14()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DSOTHREADMODEL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DSOTHREADMODEL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GROUPBY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_15()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_GROUPBY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_GROUPBY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_16()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_HETEROGENEOUSTABLES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_HETEROGENEOUSTABLES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_17()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IDENTIFIERCASE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IDENTIFIERCASE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXINDEXSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_18()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXINDEXSIZE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_MAXINDEXSIZE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_19()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXOPENCHAPTERS);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_MAXOPENCHAPTERS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXORSINFILTER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_20()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXORSINFILTER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXORSINFILTER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_21()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWSIZE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWSIZE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_22()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWSIZEINCLUDESBLOB);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWSIZEINCLUDESBLOB,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_23()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXSORTCOLUMNS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXSORTCOLUMNS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_24()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXTABLESINSELECT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXTABLESINSELECT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_25()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLEPARAMSETS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLEPARAMSETS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLERESULTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_26()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLERESULTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLERESULTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_27()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLESTORAGEOBJECTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLESTORAGEOBJECTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_28()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTITABLEUPDATE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTITABLEUPDATE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_29()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NULLCOLLATION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NULLCOLLATION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OLEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_30()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OLEOBJECTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OLEOBJECTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_31()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ORDERBYCOLUMNSINSELECT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ORDERBYCOLUMNSINSELECT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_32()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OUTPUTPARAMETERAVAILABILITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OUTPUTPARAMETERAVAILABILITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_33()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PERSISTENTIDTYPE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PERSISTENTIDTYPE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_34()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PREPAREABORTBEHAVIOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PREPAREABORTBEHAVIOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_35()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PREPARECOMMITBEHAVIOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PREPARECOMMITBEHAVIOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROCEDURETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_36()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROCEDURETERM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROCEDURETERM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_37()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERFILENAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERFILENAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_38()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDEROLEDBVER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDEROLEDBVER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_39()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERVER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERVER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_40()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_QUOTEDIDENTIFIERCASE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_QUOTEDIDENTIFIERCASE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_41()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWSETCONVERSIONSONCOMMAND);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWSETCONVERSIONSONCOMMAND,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMATERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_42()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SCHEMATERM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SCHEMATERM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMAUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_43()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SCHEMAUSAGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SCHEMAUSAGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SORTONINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_44()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SORTONINDEX);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SORTONINDEX,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SQLSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_45()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SQLSUPPORT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SQLSUPPORT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_46()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STRUCTUREDSTORAGE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_STRUCTUREDSTORAGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUBQUERIES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_47()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUBQUERIES);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_SUBQUERIES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_48()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNDDL);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNDDL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_49()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNISOLEVELS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISOLEVELS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_50()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNISORETAIN);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISORETAIN,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_51()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TABLETERM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TABLETERM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_USERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_52()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_USERNAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_USERNAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CURRENTCATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_53()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CURRENTCATALOG);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CURRENTCATALOG,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_54()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_CACHE_AUTHINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_CACHE_AUTHINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_55()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_ENCRYPT_PASSWORD);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_ENCRYPT_PASSWORD,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_56()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_INTEGRATED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_INTEGRATED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_57()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_MASK_PASSWORD);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_MASK_PASSWORD,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_58()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PASSWORD);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PASSWORD,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_59()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PERSIST_ENCRYPTED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_ENCRYPTED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_60()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_USERID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_61()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_USERID);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_USERID,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_62()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_ASYNCH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_ASYNCH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_DATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_63()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_DATASOURCE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_DATASOURCE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_HWND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_64()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_HWND);

	//For this property, request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_HWND,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_65()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_IMPERSONATION_LEVEL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_IMPERSONATION_LEVEL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_66()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LCID);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LCID,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_67()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LOCATION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LOCATION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_MODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_68()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_MODE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_MODE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROMPT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_69()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROMPT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROMPT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_70()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROTECTION_LEVEL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROTECTION_LEVEL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_71()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROVIDERSTRING);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROVIDERSTRING,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_TIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_72()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_TIMEOUT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_TIMEOUT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_73()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_AUTOINCREMENT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_AUTOINCREMENT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DEFAULT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_74()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_DEFAULT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_DEFAULT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DESCRIPTION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_75()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_DESCRIPTION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_DESCRIPTION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_76()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_FIXEDLENGTH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_FIXEDLENGTH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_NULLABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_77()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_NULLABLE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_NULLABLE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_78()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_PRIMARYKEY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_PRIMARYKEY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_79()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_UNIQUE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_UNIQUE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_80()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_AUTOUPDATE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_AUTOUPDATE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_81()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_CLUSTERED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_CLUSTERED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_82()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_FILLFACTOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_FILLFACTOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_83()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_INITIALSIZE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_INITIALSIZE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_84()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_NULLCOLLATION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_NULLCOLLATION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(85)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_85()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_NULLS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_NULLS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(86)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_86()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_PRIMARYKEY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_PRIMARYKEY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_87()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_SORTBOOKMARKS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_SORTBOOKMARKS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_88()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_TEMPINDEX);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_TEMPINDEX,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_89()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_TYPE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_TYPE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_90()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_UNIQUE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_UNIQUE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_91()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SESS_AUTOCOMMITISOLEVELS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SESS_AUTOCOMMITISOLEVELS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(92)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_92()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TBL_TEMPTABLE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TBL_TEMPTABLE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(93)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ABORTPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_93()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ABORTPRESERVE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ABORTPRESERVE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(94)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_APPENDONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_94()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_APPENDONLY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_APPENDONLY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(95)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_95()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BLOCKINGSTORAGEOBJECTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BLOCKINGSTORAGEOBJECTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(96)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_96()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(97)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_97()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKSKIPPED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKSKIPPED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(98)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_98()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKTYPE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKTYPE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(99)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CACHEDEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_99()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CACHEDEFERRED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CACHEDEFERRED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(100)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_100()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANFETCHBACKWARDS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANFETCHBACKWARDS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(101)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANHOLDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_101()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANHOLDROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANHOLDROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(102)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_102()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANSCROLLBACKWARDS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANSCROLLBACKWARDS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(103)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_103()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CHANGEINSERTEDROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CHANGEINSERTEDROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(104)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_104()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNRESTRICT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNRESTRICT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(105)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_105()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMMANDTIMEOUT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMMANDTIMEOUT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(106)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMITPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_106()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMMITPRESERVE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMMITPRESERVE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(107)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_107()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DEFERRED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DEFERRED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(108)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_108()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DELAYSTORAGEOBJECTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DELAYSTORAGEOBJECTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(109)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_109()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_FILTERCOMPAREOPS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_FILTERCOMPAREOPS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(110)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_110()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_FINDCOMPAREOPS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_FINDCOMPAREOPS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(111)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMMOBILEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_111()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IMMOBILEROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IMMOBILEROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(112)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_112()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LITERALBOOKMARKS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LITERALBOOKMARKS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(113)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_113()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LITERALIDENTITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LITERALIDENTITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(114)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_114()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXOPENROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXOPENROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(115)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXPENDINGROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_115()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXPENDINGROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXPENDINGROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(116)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_116()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(117)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_117()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAYWRITECOLUMN);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAYWRITECOLUMN,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(118)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MEMORYUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_118()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MEMORYUSAGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MEMORYUSAGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(119)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_119()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFICATIONPHASES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFICATIONPHASES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(120)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_120()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYCOLUMNSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYCOLUMNSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(121)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_121()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWDELETE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWDELETE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(122)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_122()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWFIRSTCHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWFIRSTCHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(123)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_123()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWINSERT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWINSERT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(124)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_124()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWRESYNCH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWRESYNCH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(125)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_125()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETRELEASE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETRELEASE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(126)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_126()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(127)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_127()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDOCHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOCHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(128)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_128()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDODELETE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDODELETE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(129)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_129()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDOINSERT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOINSERT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(130)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_130()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUPDATE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUPDATE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(131)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_131()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ORDEREDBOOKMARKS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ORDEREDBOOKMARKS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(132)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_132()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OTHERINSERT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OTHERINSERT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(133)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_133()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OTHERUPDATEDELETE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OTHERUPDATEDELETE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(134)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_134()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OWNINSERT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OWNINSERT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(135)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_135()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OWNUPDATEDELETE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OWNUPDATEDELETE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(136)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUICKRESTART - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_136()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_QUICKRESTART);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_QUICKRESTART,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(137)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REENTRANTEVENTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_137()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REENTRANTEVENTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REENTRANTEVENTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(138)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REMOVEDELETED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_138()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REMOVEDELETED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REMOVEDELETED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(139)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_139()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REPORTMULTIPLECHANGES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REPORTMULTIPLECHANGES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(140)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_140()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_RETURNPENDINGINSERTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_RETURNPENDINGINSERTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(141)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_141()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWRESTRICT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWRESTRICT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(142)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_142()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWSET_ASYNCH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWSET_ASYNCH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(143)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_143()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWTHREADMODEL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWTHREADMODEL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(144)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_144()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERCURSOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERCURSOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(145)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_145()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TRANSACTEDOBJECT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TRANSACTEDOBJECT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(146)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UPDATABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_146()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_UPDATABILITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_UPDATABILITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(147)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRONGIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_147()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STRONGIDENTITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_STRONGIDENTITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(148)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IAccessor - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_148()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IACCESSOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IACCESSOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(149)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IChapteredRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_149()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICHAPTEREDROWSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICHAPTEREDROWSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(150)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_150()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(151)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_151()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSROWSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSROWSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(152)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConnectionPointContainer - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_152()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICONNECTIONPOINTCONTAINER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICONNECTIONPOINTCONTAINER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(153)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConvertType - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_153()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICONVERTTYPE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICONVERTTYPE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(154)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDBAsynchStatus - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_154()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IDBASYNCHSTATUS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IDBASYNCHSTATUS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(155)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_155()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(156)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_156()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETCHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETCHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(157)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetFind - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_157()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETFIND);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETFIND,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(158)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIdentity - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_158()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETIDENTITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETIDENTITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(159)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_159()
{
		TBEGIN;

//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETINDEX);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETINDEX,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(160)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_160()
{
	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(161)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetLocate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_161()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETLOCATE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETLOCATE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(162)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetResynch - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_162()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETRESYNCH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETRESYNCH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(163)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetScroll - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_163()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETSCROLL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETSCROLL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(164)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetUpdate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_164()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETUPDATE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETUPDATE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(165)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetView - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_165()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETVIEW);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETVIEW,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(166)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewChapter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_166()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWCHAPTER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWCHAPTER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(167)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewFilter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_167()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWFILTER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWFILTER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(168)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_168()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWROWSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWROWSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(169)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewSort - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_169()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWSORT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWSORT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(170)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ILockBytes - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_170()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ILOCKBYTES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ILOCKBYTES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(171)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISequentialStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_171()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISEQUENTIALSTREAM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISEQUENTIALSTREAM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(172)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStorage - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_172()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISTORAGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISTORAGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(173)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_173()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISTREAM);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISTREAM,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(174)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISupportErrorInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_174()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISUPPORTERRORINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISUPPORTERRORINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(175)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ALTERCOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_175()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ALTERCOLUMN);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ALTERCOLUMN,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(176)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_176()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CONNECTIONSTATUS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CONNECTIONSTATUS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(177)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_177()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERFRIENDLYNAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERFRIENDLYNAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(178)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERMEMORY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_178()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERMEMORY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERMEMORY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(179)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_179()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERNAME);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERNAME,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(180)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_180()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLECONNECTIONS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLECONNECTIONS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(181)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RESETDATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_181()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_RESETDATASOURCE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_RESETDATASOURCE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(182)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_CATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_182()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_CATALOG);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_CATALOG,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(183)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_183()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_OLEDBSERVICES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_OLEDBSERVICES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(184)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNLCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_184()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNLCID);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNLCID,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(185)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACCESSORDER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_185()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ACCESSORDER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ACCESSORDER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(186)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_186()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKINFO);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKINFO,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(187)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_187()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_HIDDENCOLUMNS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_HIDDENCOLUMNS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(188)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LOCKMODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_188()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LOCKMODE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LOCKMODE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(189)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_189()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFICATIONGRANULARITY);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFICATIONGRANULARITY,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(190)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROW_BULKOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_190()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROW_BULKOPS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROW_BULKOPS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(191)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_191()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERDATAONINSERT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERDATAONINSERT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(192)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STORAGEFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_192()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STORAGEFLAGS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_STORAGEFLAGS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(193)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UNIQUEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_193()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_UNIQUEROWS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_UNIQUEROWS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(194)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMultipleResults - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_194()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IMULTIPLERESULTS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IMULTIPLERESULTS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(195)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetRefresh - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_195()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETREFRESH);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETREFRESH,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(196)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IParentRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_196()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IPARENTROWSET);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IPARENTROWSET,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(197)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_INCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_197()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_INCREMENT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_INCREMENT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(198)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_ISLONG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_198()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_ISLONG);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_ISLONG,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(199)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_SEED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_199()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_SEED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_SEED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(200)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_200()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMSERVICES);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMSERVICES,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(201)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCETYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_201()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCETYPE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCETYPE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(202)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GENERATEURL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_202()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_GENERATEURL);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_GENERATEURL,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(203)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_203()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OPENROWSETSUPPORT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OPENROWSETSUPPORT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(204)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_204()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_BINDFLAGS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_BINDFLAGS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(205)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_205()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_GENERALTIMEOUT);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_GENERALTIMEOUT,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(206)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_206()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LOCKOWNER);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LOCKOWNER,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(207)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CLIENTCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_207()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CLIENTCURSOR);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CLIENTCURSOR,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(208)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_208()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETCHANGED);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETCHANGED,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(209)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IBindResource - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_209()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IBINDRESOURCE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IBINDRESOURCE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(210)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo2 - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_210()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSINFO2);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO2,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(211)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ICreateRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_211()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICREATEROW);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICREATEROW,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(212)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_212()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETROW);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETROW,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(213)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSession - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_213()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETSESSION);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETSESSION,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(214)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSourceRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_214()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETSOURCEROW);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETSOURCEROW,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(215)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_215()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROW);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROW,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(216)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_216()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWCHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWCHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(217)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowSchemaChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_217()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSCHEMACHANGE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSCHEMACHANGE,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(218)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_218()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETCURRENTINDEX);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETCURRENTINDEX,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(219)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IScopedOperations - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetProperties::Variation_219()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISCOPEDOPERATIONS);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISCOPEDOPERATIONS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(220)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLESTATISTICS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_SetProperties::Variation_220()
{ 
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TABLESTATISTICS);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_TABLESTATISTICS,FALSE,0,NULL));

CLEANUP:
	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetProperties::Terminate()
{
	// Release the Malloc Pointer
	SAFE_RELEASE(m_pIDBProperties);

	return (TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCIDProperties_SetDBInitProperties)
//*-----------------------------------------------------------------------
//| Test Case:		TCIDProperties_SetDBInitProperties - set DBInit supported Properties
//|	Created:		09/19/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetDBInitProperties::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		//Release the IDBProperties pointer
		SAFE_RELEASE(m_pIDBProperties);

		//Get an Uninitialized DSO
		if(!SUCCEEDED(CreateDataSourceObject()))
			return FALSE;

		//IDBProperties interface and get the Defaults will Uninitialized
		if(SUCCEEDED(m_pIDBInitialize->QueryInterface(IID_IDBProperties,
												(LPVOID *)&m_pIDBProperties)))
		{
			//Get GetPropertyInfo defaults
			if(!COMPARE(InitGetPropInfoDefault(),TRUE))
				return FALSE;

			//Get GetProperty defaults
			if(COMPARE(InitGetPropDefault(FALSE),TRUE))
				return TRUE;
		}
	}

	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACTIVESESSIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_1()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ACTIVESESSIONS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ACTIVESESSIONS,FALSE,0,NULL,FALSE))

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNABORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_2()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ASYNCTXNABORT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ASYNCTXNABORT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ASYNCTXNCOMMIT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_3()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ASYNCTXNCOMMIT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ASYNCTXNCOMMIT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(4)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BYREFACCESSORS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_4()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BYREFACCESSORS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BYREFACCESSORS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(5)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGLOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_5()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGLOCATION,FALSE);

	TESTC(VerifyProperty(IDX_CATALOGLOCATION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(6)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGTERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_6()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGTERM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CATALOGTERM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(7)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CATALOGUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_7()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CATALOGUSAGE,FALSE);

	//For this property, do not request IReadData on the rowset
	TESTC(VerifyProperty(IDX_CATALOGUSAGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(8)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNDEFINITION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_8()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNDEFINITION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNDEFINITION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(9)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONCATNULLBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_9()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CONCATNULLBEHAVIOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CONCATNULLBEHAVIOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(10)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCENAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_10()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCENAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCENAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(11)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCEREADONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_11()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCEREADONLY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCEREADONLY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(12)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_12()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DBMSNAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DBMSNAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(13)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DBMSVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_13()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DBMSVER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DBMSVER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(14)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DSOTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_14()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DSOTHREADMODEL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DSOTHREADMODEL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(15)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GROUPBY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_15()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_GROUPBY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_GROUPBY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(16)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HETEROGENEOUSTABLES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_16()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_HETEROGENEOUSTABLES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_HETEROGENEOUSTABLES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(17)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_17()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IDENTIFIERCASE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IDENTIFIERCASE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(18)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXINDEXSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_18()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXINDEXSIZE,FALSE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_MAXINDEXSIZE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(19)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENCHAPTERS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_19()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXOPENCHAPTERS,FALSE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_MAXOPENCHAPTERS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(20)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXORSINFILTER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_20()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXORSINFILTER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXORSINFILTER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(21)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_21()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWSIZE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWSIZE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(22)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWSIZEINCLUDESBLOB - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_22()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWSIZEINCLUDESBLOB,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWSIZEINCLUDESBLOB,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(23)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXSORTCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_23()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXSORTCOLUMNS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXSORTCOLUMNS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(24)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXTABLESINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_24()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXTABLESINSELECT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXTABLESINSELECT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(25)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLEPARAMSETS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_25()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLEPARAMSETS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLEPARAMSETS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(26)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLERESULTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_26()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLERESULTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLERESULTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(27)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLESTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_27()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLESTORAGEOBJECTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLESTORAGEOBJECTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(28)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTITABLEUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_28()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTITABLEUPDATE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTITABLEUPDATE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(29)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_29()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NULLCOLLATION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NULLCOLLATION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(30)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OLEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_30()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OLEOBJECTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OLEOBJECTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(31)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDERBYCOLUMNSINSELECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_31()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ORDERBYCOLUMNSINSELECT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ORDERBYCOLUMNSINSELECT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(32)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OUTPUTPARAMETERAVAILABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_32()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OUTPUTPARAMETERAVAILABILITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OUTPUTPARAMETERAVAILABILITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(33)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PERSISTENTIDTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_33()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PERSISTENTIDTYPE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PERSISTENTIDTYPE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(34)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPAREABORTBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_34()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PREPAREABORTBEHAVIOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PREPAREABORTBEHAVIOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(35)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PREPARECOMMITBEHAVIOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_35()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PREPARECOMMITBEHAVIOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PREPARECOMMITBEHAVIOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(36)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROCEDURETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_36()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROCEDURETERM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROCEDURETERM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(37)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_37()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERFILENAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERFILENAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(38)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDEROLEDBVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_38()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDEROLEDBVER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDEROLEDBVER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(39)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERVER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_39()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERVER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERVER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(40)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUOTEDIDENTIFIERCASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_40()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_QUOTEDIDENTIFIERCASE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_QUOTEDIDENTIFIERCASE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(41)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSETCONVERSIONSONCOMMAND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_41()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWSETCONVERSIONSONCOMMAND,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWSETCONVERSIONSONCOMMAND,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(42)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMATERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_42()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SCHEMATERM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SCHEMATERM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(43)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SCHEMAUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_43()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SCHEMAUSAGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SCHEMAUSAGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(44)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SORTONINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_44()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SORTONINDEX,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SORTONINDEX,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(45)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SQLSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_45()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SQLSUPPORT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SQLSUPPORT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(46)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRUCTUREDSTORAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_46()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STRUCTUREDSTORAGE,FALSE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_STRUCTUREDSTORAGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(47)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUBQUERIES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_47()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUBQUERIES,FALSE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_SUBQUERIES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(48)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNDDL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_48()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNDDL,FALSE);

	//For this property, do not request IReadData on the rowset.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNDDL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(49)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_49()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNISOLEVELS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISOLEVELS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(50)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SUPPORTEDTXNISORETAIN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_50()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SUPPORTEDTXNISORETAIN,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SUPPORTEDTXNISORETAIN,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(51)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLETERM - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_51()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TABLETERM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TABLETERM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(52)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_USERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_52()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_USERNAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_USERNAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(53)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CURRENTCATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_53()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CURRENTCATALOG,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CURRENTCATALOG,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(54)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_CACHE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_54()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_CACHE_AUTHINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_CACHE_AUTHINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(55)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_ENCRYPT_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_55()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_ENCRYPT_PASSWORD,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_ENCRYPT_PASSWORD,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(56)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_INTEGRATED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_56()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_INTEGRATED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_INTEGRATED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(57)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_MASK_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_57()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_MASK_PASSWORD,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_MASK_PASSWORD,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(58)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PASSWORD - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_58()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PASSWORD,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PASSWORD,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(59)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_ENCRYPTED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_59()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PERSIST_ENCRYPTED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_ENCRYPTED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(60)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_60()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_PERSIST_SENSITIVE_AUTHINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(61)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_AUTH_USERID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_61()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_AUTH_USERID,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_AUTH_USERID,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(62)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_62()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_ASYNCH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_ASYNCH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(63)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_DATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_63()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_DATASOURCE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_DATASOURCE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(64)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_HWND - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_64()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_HWND,FALSE);

	//For this property, request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_HWND,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(65)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_IMPERSONATION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_65()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_IMPERSONATION_LEVEL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_IMPERSONATION_LEVEL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(66)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_66()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LCID,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LCID,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(67)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_67()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LOCATION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LOCATION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(68)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_MODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_68()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_MODE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_MODE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(69)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROMPT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_69()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROMPT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROMPT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(70)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROTECTION_LEVEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_70()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROTECTION_LEVEL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROTECTION_LEVEL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(71)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_PROVIDERSTRING - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_71()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_PROVIDERSTRING,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_PROVIDERSTRING,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(72)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_TIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_72()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_TIMEOUT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_TIMEOUT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(73)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_AUTOINCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_73()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_AUTOINCREMENT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_AUTOINCREMENT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(74)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DEFAULT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_74()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_DEFAULT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_DEFAULT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(75)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_DESCRIPTION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_75()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_DESCRIPTION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_DESCRIPTION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(76)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_FIXEDLENGTH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_76()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_FIXEDLENGTH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_FIXEDLENGTH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(77)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_NULLABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_77()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_NULLABLE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_NULLABLE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(78)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_78()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_PRIMARYKEY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_PRIMARYKEY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(79)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_79()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_UNIQUE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_UNIQUE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(80)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_AUTOUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_80()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_AUTOUPDATE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_AUTOUPDATE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(81)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_CLUSTERED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_81()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_CLUSTERED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_CLUSTERED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(82)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_FILLFACTOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_82()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_FILLFACTOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_FILLFACTOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(83)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_INITIALSIZE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_83()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_INITIALSIZE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_INITIALSIZE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(84)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLCOLLATION - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_84()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_NULLCOLLATION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_NULLCOLLATION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(85)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_NULLS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_85()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_NULLS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_NULLS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(86)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_PRIMARYKEY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_86()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_PRIMARYKEY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_PRIMARYKEY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(87)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_SORTBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_87()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_SORTBOOKMARKS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_SORTBOOKMARKS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(88)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TEMPINDEX - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_88()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_TEMPINDEX,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_TEMPINDEX,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(89)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_TYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_89()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_TYPE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_TYPE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(90)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INDEX_UNIQUE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_90()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INDEX_UNIQUE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INDEX_UNIQUE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(91)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SESS_AUTOCOMMITISOLEVELS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_91()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SESS_AUTOCOMMITISOLEVELS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SESS_AUTOCOMMITISOLEVELS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(92)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TBL_TEMPTABLE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_92()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TBL_TEMPTABLE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TBL_TEMPTABLE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(93)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ABORTPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_93()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ABORTPRESERVE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ABORTPRESERVE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(94)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_APPENDONLY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_94()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_APPENDONLY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_APPENDONLY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(95)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BLOCKINGSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_95()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BLOCKINGSTORAGEOBJECTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BLOCKINGSTORAGEOBJECTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(96)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_96()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(97)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKSKIPPED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_97()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKSKIPPED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKSKIPPED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(98)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKTYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_98()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKTYPE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKTYPE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(99)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CACHEDEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_99()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CACHEDEFERRED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CACHEDEFERRED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(100)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANFETCHBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_100()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANFETCHBACKWARDS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANFETCHBACKWARDS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(101)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANHOLDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_101()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANHOLDROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANHOLDROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(102)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CANSCROLLBACKWARDS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_102()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CANSCROLLBACKWARDS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CANSCROLLBACKWARDS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(103)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CHANGEINSERTEDROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_103()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CHANGEINSERTEDROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CHANGEINSERTEDROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(104)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_104()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNRESTRICT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNRESTRICT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(105)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMANDTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_105()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMMANDTIMEOUT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMMANDTIMEOUT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(106)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMMITPRESERVE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_106()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMMITPRESERVE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMMITPRESERVE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(107)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DEFERRED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_107()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DEFERRED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DEFERRED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(108)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DELAYSTORAGEOBJECTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_108()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DELAYSTORAGEOBJECTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DELAYSTORAGEOBJECTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(109)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FILTERCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_109()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_FILTERCOMPAREOPS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_FILTERCOMPAREOPS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(110)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_FINDCOMPAREOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_110()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_FINDCOMPAREOPS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_FINDCOMPAREOPS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(111)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMMOBILEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_111()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IMMOBILEROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IMMOBILEROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(112)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_112()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LITERALBOOKMARKS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LITERALBOOKMARKS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(113)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LITERALIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_113()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LITERALIDENTITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LITERALIDENTITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(114)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXOPENROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_114()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXOPENROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXOPENROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(115)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXPENDINGROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_115()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXPENDINGROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXPENDINGROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(116)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAXROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_116()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAXROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAXROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(117)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MAYWRITECOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_117()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MAYWRITECOLUMN,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MAYWRITECOLUMN,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(118)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MEMORYUSAGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_118()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MEMORYUSAGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MEMORYUSAGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(119)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONPHASES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_119()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFICATIONPHASES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFICATIONPHASES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(120)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYCOLUMNSET - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_120()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYCOLUMNSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYCOLUMNSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(121)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_121()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWDELETE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWDELETE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(122)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWFIRSTCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_122()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWFIRSTCHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWFIRSTCHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(123)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_123()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWINSERT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWINSERT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(124)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWRESYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_124()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWRESYNCH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWRESYNCH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(125)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETRELEASE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_125()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETRELEASE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETRELEASE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(126)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_126()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETFETCHPOSITIONCHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(127)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOCHANGE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_127()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDOCHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOCHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(128)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDODELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_128()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDODELETE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDODELETE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(129)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUNDOINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_129()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUNDOINSERT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUNDOINSERT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(130)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWUPDATE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_130()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWUPDATE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWUPDATE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(131)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ORDEREDBOOKMARKS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_131()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ORDEREDBOOKMARKS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ORDEREDBOOKMARKS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(132)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_132()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OTHERINSERT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OTHERINSERT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(133)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OTHERUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_133()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OTHERUPDATEDELETE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OTHERUPDATEDELETE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(134)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_134()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OWNINSERT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OWNINSERT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(135)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OWNUPDATEDELETE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_135()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OWNUPDATEDELETE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OWNUPDATEDELETE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(136)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_QUICKRESTART - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_136()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_QUICKRESTART,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_QUICKRESTART,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(137)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REENTRANTEVENTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_137()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REENTRANTEVENTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REENTRANTEVENTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(138)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REMOVEDELETED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_138()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REMOVEDELETED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REMOVEDELETED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(139)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_REPORTMULTIPLECHANGES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_139()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_REPORTMULTIPLECHANGES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_REPORTMULTIPLECHANGES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(140)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RETURNPENDINGINSERTS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_140()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_RETURNPENDINGINSERTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_RETURNPENDINGINSERTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(141)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWRESTRICT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_141()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWRESTRICT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWRESTRICT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(142)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWSET_ASYNCH - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_142()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWSET_ASYNCH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWSET_ASYNCH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(143)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROWTHREADMODEL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_143()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROWTHREADMODEL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROWTHREADMODEL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(144)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_144()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERCURSOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERCURSOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(145)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TRANSACTEDOBJECT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_145()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TRANSACTEDOBJECT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TRANSACTEDOBJECT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(146)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UPDATABILITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_146()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_UPDATABILITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_UPDATABILITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(147)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STRONGIDENTITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_147()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STRONGIDENTITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_STRONGIDENTITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(148)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IAccessor - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_148()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IACCESSOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IACCESSOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(149)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IChapteredRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_149()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICHAPTEREDROWSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICHAPTEREDROWSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(150)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_150()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(151)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_151()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSROWSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSROWSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(152)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConnectionPointContainer - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_152()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICONNECTIONPOINTCONTAINER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICONNECTIONPOINTCONTAINER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(153)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IConvertType - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_153()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICONVERTTYPE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICONVERTTYPE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(154)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IDBAsynchStatus - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_154()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IDBASYNCHSTATUS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IDBASYNCHSTATUS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(155)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_155()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(156)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_156()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETCHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETCHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(157)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetFind - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_157()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETFIND,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETFIND,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(158)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIdentity - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_158()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETIDENTITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETIDENTITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(159)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_159()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETINDEX,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETINDEX,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(160)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_160()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(161)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetLocate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_161()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETLOCATE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETLOCATE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(162)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetResynch - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_162()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETRESYNCH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETRESYNCH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(163)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetScroll - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_163()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETSCROLL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETSCROLL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(164)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetUpdate - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_164()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETUPDATE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETUPDATE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(165)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetView - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_165()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETVIEW,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETVIEW,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(166)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewChapter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_166()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWCHAPTER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWCHAPTER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(167)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewFilter - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_167()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWFILTER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWFILTER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(168)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_168()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWROWSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWROWSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(169)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IViewSort - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_169()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IVIEWSORT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IVIEWSORT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(170)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ILockBytes - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_170()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ILOCKBYTES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ILOCKBYTES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(171)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISequentialStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_171()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISEQUENTIALSTREAM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISEQUENTIALSTREAM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(172)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStorage - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_172()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISTORAGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISTORAGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(173)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IStream - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_173()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISTREAM,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISTREAM,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(174)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ISupportErrorInfo - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_174()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISUPPORTERRORINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISUPPORTERRORINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(175)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ALTERCOLUMN - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_175()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ALTERCOLUMN,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ALTERCOLUMN,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(176)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CONNECTIONSTATUS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_176()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CONNECTIONSTATUS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CONNECTIONSTATUS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(177)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERFRIENDLYNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_177()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERFRIENDLYNAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERFRIENDLYNAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(178)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_PROVIDERMEMORY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_178()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_PROVIDERMEMORY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_PROVIDERMEMORY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(179)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERNAME - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_179()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERNAME,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERNAME,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(180)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_MULTIPLECONNECTIONS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_180()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_MULTIPLECONNECTIONS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_MULTIPLECONNECTIONS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(181)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_RESETDATASOURCE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_181()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_RESETDATASOURCE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_RESETDATASOURCE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(182)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_CATALOG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_182()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_CATALOG,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_CATALOG,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(183)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_OLEDBSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_183()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_OLEDBSERVICES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_OLEDBSERVICES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(184)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COLUMNLCID - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_184()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COLUMNLCID,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COLUMNLCID,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(185)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ACCESSORDER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_185()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ACCESSORDER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ACCESSORDER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(186)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_BOOKMARKINFO - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_186()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_BOOKMARKINFO,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_BOOKMARKINFO,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(187)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_HIDDENCOLUMNS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_187()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_HIDDENCOLUMNS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_HIDDENCOLUMNS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(188)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_LOCKMODE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_188()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_LOCKMODE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_LOCKMODE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(189)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFICATIONGRANULARITY - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_189()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFICATIONGRANULARITY,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFICATIONGRANULARITY,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(190)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ROW_BULKOPS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_190()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ROW_BULKOPS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ROW_BULKOPS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(191)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_SERVERDATAONINSERT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_191()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_SERVERDATAONINSERT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_SERVERDATAONINSERT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(192)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_STORAGEFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_192()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_STORAGEFLAGS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_STORAGEFLAGS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(193)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_UNIQUEROWS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_193()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_UNIQUEROWS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_UNIQUEROWS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(194)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IMultipleResults - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_194()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IMULTIPLERESULTS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IMULTIPLERESULTS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(195)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetRefresh - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_195()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETREFRESH,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETREFRESH,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(196)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IParentRowset - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_196()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IPARENTROWSET,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IPARENTROWSET,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(197)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_INCREMENT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_197()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_INCREMENT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_INCREMENT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(198)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_ISLONG - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_198()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_ISLONG,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_ISLONG,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(199)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COL_SEED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_199()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COL_SEED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COL_SEED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(200)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_COMSERVICES - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_200()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_COMSERVICES,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_COMSERVICES,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(201)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_DATASOURCETYPE - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_201()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_DATASOURCETYPE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_DATASOURCETYPE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(202)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_GENERATEURL - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_202()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_GENERATEURL,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_GENERATEURL,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(203)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_OPENROWSETSUPPORT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_203()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_OPENROWSETSUPPORT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_OPENROWSETSUPPORT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(204)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_BINDFLAGS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_204()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_BINDFLAGS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_BINDFLAGS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(205)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_GENERALTIMEOUT - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_205()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_GENERALTIMEOUT,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_GENERALTIMEOUT,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(206)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_INIT_LOCKOWNER - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_206()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_INIT_LOCKOWNER,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_INIT_LOCKOWNER,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(207)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_CLIENTCURSOR - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_207()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_CLIENTCURSOR,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_CLIENTCURSOR,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(208)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_NOTIFYROWSETCHANGED - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_208()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_NOTIFYROWSETCHANGED,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_NOTIFYROWSETCHANGED,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(209)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IBindResource - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_209()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IBINDRESOURCE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IBINDRESOURCE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(210)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IColumnsInfo2 - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_210()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICOLUMNSINFO2,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICOLUMNSINFO2,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(211)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_ICreateRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_211()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ICREATEROW,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ICREATEROW,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(212)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_212()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETROW,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETROW,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(213)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSession - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_213()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETSESSION,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETSESSION,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(214)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IGetSourceRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_214()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IGETSOURCEROW,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IGETSOURCEROW,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(215)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRow - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_215()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROW,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROW,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(216)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_216()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWCHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWCHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(217)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowSchemaChange - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_217()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSCHEMACHANGE,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSCHEMACHANGE,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(218)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IRowsetCurrentIndex - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_218()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_IROWSETCURRENTINDEX,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_IROWSETCURRENTINDEX,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(219)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_IScopedOperations - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCIDProperties_SetDBInitProperties::Variation_219()
{
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_ISCOPEDOPERATIONS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_ISCOPEDOPERATIONS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
}
// }}


// {{ TCW_VAR_PROTOTYPE(220)
//*-----------------------------------------------------------------------
// @mfunc DBPROP is DBPROP_TABLESTATISTICS - S_OK
//
// @rdesc TEST_PASS or TEST_FAIL 
//
int TCIDProperties_SetDBInitProperties::Variation_220()
{ 
	TBEGIN;

	//Check to see if Property is WRITABLE
	WritableProperty(IDX_TABLESTATISTICS,FALSE);

	//For this property, do not request IReadData on the rowset, there is no
	//implied properties after execution.
	TESTC(VerifyProperty(IDX_TABLESTATISTICS,FALSE,0,NULL,FALSE));

CLEANUP:
	TRETURN;
} 
// }} TCW_VAR_PROTOTYPE_END


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCIDProperties_SetDBInitProperties::Terminate()
{
	// Release the objects
	SAFE_RELEASE(m_pIDBProperties)

	//Release the DSO
	ReleaseDataSourceObject();
	
	return (TCIDProperties::Terminate());
}
// }}
// }}


// {{ TCW_TC_PROTOTYPE(TCExtendedErrors)
//*-----------------------------------------------------------------------
//| Test Case:		TCExtendedErrors - Extended Errors
//|	Created:		07/04/96
//|	Updated:		04/25/98
//*-----------------------------------------------------------------------

//--------------------------------------------------------------------
// @mfunc TestCase Initialization Routine
//
// @rdesc TRUE or FALSE
//

BOOL TCExtendedErrors::Init()
{
	// {{ TCW_INIT_BASECLASS_CHECK	
	if(TCIDProperties::Init())
	// }}
	{
		//IDBProperties interface
		if(!SUCCEEDED(((IDBCreateSession *)(m_pThisTestModule->m_pIUnknown))->
				QueryInterface(IID_IDBProperties,(LPVOID *)&m_pIDBProperties)))
			return FALSE;

		m_cPropertyIDSets=1;
		m_rgPropertyIDSets->rgPropertyIDs=m_rgPropertyIDs;
		m_rgPropertyIDSets->cPropertyIDs=1;
		m_rgPropertyIDSets->guidPropertySet=DBPROPSET_DATASOURCEINFO;

		return TRUE;
	}
	return FALSE;
}


// {{ TCW_VAR_PROTOTYPE(1)
//*-----------------------------------------------------------------------
// @mfunc Valid GetPropertyInfo call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_1()
{
	// For method GetPropertyInfo of the interface, first create an error object on
	// the current thread, then try get S_OK from the method.
	// We then check extended errors to verify nothing is set since an 
	// error object shouldn't exist following a successful call.
	
	// Assignments
	m_fSuccess = TEST_FAIL;
	
	//Create an error object
	m_pExtError->CauseError();
	
	//DBPROP_IRowset
	CHECK(m_hr=m_pIDBProperties->GetPropertyInfo(0, NULL,
				&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), S_OK);

	//Do extended check following GetPropertyInfo
	m_fSuccess = XCHECK(m_pIDBProperties, IID_IDBProperties, m_hr);	
	
	//Free memory from GetPropertyInfo
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(2)
//*-----------------------------------------------------------------------
// @mfunc DB_E_ERRORSOCCURRED GetPropertyInfo call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_2()
{
	//For method GetPropertyInfo of the interface, first create an error object on
	//the current thread, then try get an failure from the method.
	//We then check extended errors to verify the right extended error behavior.
	
	//Assignments
	m_fSuccess							= TEST_FAIL;
	m_rgPropertyIDSets->guidPropertySet = DBPROPSET_DBINIT;
	m_rgPropertyIDs[0] = 0;
	
	//Create an error object
	m_pExtError->CauseError();
	
	CHECK(m_hr=m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer), DB_E_ERRORSOCCURRED);

	//Do extended check following GetPropertyInfo
	m_fSuccess = XCHECK(m_pIDBProperties, IID_IDBProperties, m_hr);	

	//Free memory from GetPropertyInfo
	FreeProperties(&m_pcPropertyInfoSets, &m_prgPropertyInfoSets, &m_ppDescBuffer);
	return m_fSuccess;
}
// }}


// {{ TCW_VAR_PROTOTYPE(3)
//*-----------------------------------------------------------------------
// @mfunc E_INVALIDARG GetPropertyInfo call with previous error object existing.
//
// @rdesc TEST_PASS or TEST_FAIL
//
int TCExtendedErrors::Variation_3()
{
	//For method GetPropertyInfo of the interface, with no error object on
	//the current thread, then try get an failure from the method.
	//We then check extended errors to verify the right extended error behavior.
	
	//Assignments
	m_rgPropertyIDs[0]	= DBPROP_ACTIVESESSIONS;
	m_fSuccess			= TEST_FAIL;

	//Null pcPropertyInfoSets should fail gracefully 
	CHECK(m_hr=m_pIDBProperties->GetPropertyInfo(m_cPropertyIDSets, m_rgPropertyIDSets,
				NULL, &m_prgPropertyInfoSets, &m_ppDescBuffer), E_INVALIDARG);

	//Do extended check following GetPropertyInfo
	m_fSuccess = XCHECK(m_pIDBProperties, IID_IDBProperties, m_hr);	

	return m_fSuccess;
}
// }}


// {{ TCW_TERMINATE_METHOD
//--------------------------------------------------------------------
// @mfunc TestCase Termination Routine
//
// @rdesc TRUE or FALSE
//
BOOL TCExtendedErrors::Terminate()
{
	//Release the Malloc Pointer
	SAFE_RELEASE(m_pIDBProperties);

	return(TCIDProperties::Terminate());

}	
// }}
